繁体   English   中英

合并两个SQL查询

[英]Merge two sql queries

我的表user具有subidname的复合唯一索引。 为了将新行插入表user ,我必须确保name不存在,否则必须将subid增加1。我倾向于通过两个查询来解决此问题。

DB.query("SELECT subid FROM user WHERE name='"+name+"' ORDER BY subid DESC LIMIT 1",function(er,rows){
    if(er){
        throw er;
    }
    var row = rows[0];
    var subid = row ? row.subid+1 : 0;
    DB.query("INSERT INTO user(name,subid) VALUES('"+name+"','"+subid+"')",function(er){
        if(er){
            throw er;
        }
    });
});

如何在单个查询中获得相同的结果?

尝试作为:

  insert into userT 
  select 'bbb', coalesce(max(subid),0)+1 from userT where name = 'bbb';

用程序的name值替换'bbb'

这是一个小工具,可以显示其工作原理: http : //sqlfiddle.com/#!9/689db1/1

尝试使用以下查询:

插入到用户(name,subid)中选择名称,如果((从( name ='naresh'的用户中选择count( ))> 0,(从name ='naresh'的用户中选择count( )),0)从用户

祝你好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM