<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)
더 나은 해결책이 있어야 할 것 같습니다. .
또 다른 제안은 Liz가 앞으로 질문을 할 때 테이블 생성 문과 데이터 채우기 문을 게시하는 것이 가장 좋다는 것입니다. 이렇게 하면 시간이 많이 절약됩니다. 아마도 더 많은 답변이 있을 것입니다.
update table set vip=1 where id=(select shangjiaid from (select from table group by shangjiaid have count()>2)t ) 이것은 아마도 아이디어일 것입니다. SQL이 잘못되었을 수 있습니다. , 당신은보세요
이렇게 복잡한 문장을 분리할 수는 있는데, 이렇게 한 번에 완성되는 복잡한 SQL 문장은 데이터 양이 많아지면 비즈니스가 특히 막힐 것 같아요.
먼저 어떤 ID에 3개 이상의 판매자 ID가 있는지 계산한 다음 VIP를 각각 1로 업데이트할 수 있습니다. 이것이 가능하지 않으면 대기열을 추가할 수도 있습니다. 이는 비즈니스에 더 좋습니다.