您好,欢迎访问一九零五行业门户网

求一句UPDATE语句

table_userid user shangjiaid vip1 用户a 2 02 用户b 3 03 用户c 2 04 用户d 5 05 用户e 5 06 用户f 5 07 用户g 2 08 用户h 5 09 用户j 2 010 用户k 5 011 用户k 5 012 用户k 7 013 用户k 12 0更新vip等于1比如 id=5的这个人 下家的数量满足3个 然后更新vip=1用一句sql能update更新? 这个应该属于递归...就是说每个人都有上家...如果这个人下家满足3个人..然后更新vip=1update结果集table_userid user shangjiaid vip5 用户e 5 12 用户b 3 1

回复内容: table_userid user shangjiaid vip1 用户a 2 02 用户b 3 03 用户c 2 04 用户d 5 05 用户e 5 06 用户f 5 07 用户g 2 08 用户h 5 09 用户j 2 010 用户k 5 011 用户k 5 012 用户k 7 013 用户k 12 0更新vip等于1比如 id=5的这个人 下家的数量满足3个 然后更新vip=1用一句sql能update更新? 这个应该属于递归...就是说每个人都有上家...如果这个人下家满足3个人..然后更新vip=1update结果集table_userid user shangjiaid vip5 用户e 5 12 用户b 3 1

update table_user set vip = 1 where id in (select * from (select a.shangjiaid from table_user as a group by a.shangjiaid having count(1) >= 3) as b)
感觉应该还有更优解吧。。
另外给个建议,lz以后提问的时候最好能把建表语句和数据填充语句贴上来,这样会省很多时间。也许会有更多答案。
update table set vip=1 where id=(select shangjiaid from (select from table group by shangjiaid having count()>2)t ) 大概是这个思路,sql可能不对,你自己看看
这种复杂的语句你可以分开,这种复杂的一步完成的sql语句在我看来并不好,遇到数据量大的时候业务就会特别卡。
你可以先统计哪些id 的商家id下家数量大于3,在分别更新vip为1;实在不行也可以的加一个队列,这样对业务应该会好一点。
其它类似信息

推荐信息