php update语句累加,求一句UPDATE语句

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

回复内容:

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

update table_user set vip = 1 where id in (select * from (SELECT a.shangjiaid FROMtable_useras 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;实在不行也可以的加一个队列,这样对业务应该会好一点。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值