求一句UPDATE语句
程序员文章站
2022-06-02 16:34:35
...
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 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;实在不行也可以的加一个队列,这样对业务应该会好一点。
推荐阅读
-
求一句霸气的甩人签名!!!!
-
PHP新手用的Insert和Update语句构造类
-
SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)
-
SQL Server UPDATE语句的用法详解
-
Mysql查询语句使用select.. for update导致的数据库死锁分析
-
使用 TOP 子句限制UPDATE 语句更新的数据
-
sql server的 update from 语句的深究
-
轻量ORM-SqlRepoEx (四)INSERT、UPDATE、DELETE 语句
-
面试官:你知道select语句和update语句分别是怎么执行的吗?
-
mysql update语句的执行过程详解