求一句UPDATE语句
Aug 04, 2016 am 09:22 AM
<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;实在不行也可以的加一个队列,这样对业务应该会好一点。

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Comment configurer Visual Studio Code (VS Code) pour le développement PHP
