<code>table_user id user shangjiaid vip 1 用户A 2 0 2 用户B 3 0 3 用户C 2 0 4 用户D 5 0 5 用户E 5 0 6 用户F 5 0 7 用户G 2 0 8 用户H 5 0 9 用户J 2 0 10 用户K 5 0 11 用户K 5 0 12 用户K 7 0 13 用户K 12 0 更新VIP等于1 比如 id=5的这个人 下家的数量满足3个 然后更新vip=1 用一句sql能update更新? 这个应该属于递归... 就是说每个人都有上家...如果这个人下家满足3个人..然后更新VIP=1 update结果集 table_user id user shangjiaid vip 5 用户E 5 1 2 用户B 3 1</code>
<code>table_user id user shangjiaid vip 1 用户A 2 0 2 用户B 3 0 3 用户C 2 0 4 用户D 5 0 5 用户E 5 0 6 用户F 5 0 7 用户G 2 0 8 用户H 5 0 9 用户J 2 0 10 用户K 5 0 11 用户K 5 0 12 用户K 7 0 13 用户K 12 0 更新VIP等于1 比如 id=5的这个人 下家的数量满足3个 然后更新vip=1 用一句sql能update更新? 这个应该属于递归... 就是说每个人都有上家...如果这个人下家满足3个人..然后更新VIP=1 update结果集 table_user id user shangjiaid vip 5 用户E 5 1 2 用户B 3 1</code>
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;實在不行也可以的加一個隊列,這樣對業務應該會好一點。