[英]Merge two sql queries
我的表user
具有subid
和name
的复合唯一索引。 为了将新行插入表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.