我的表格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;
}
});
});
如何在单个查询中获得相同的结果?
答案 0 :(得分:1)
尝试为:
insert into userT
select 'bbb', coalesce(max(subid),0)+1 from userT where name = 'bbb';
将'bbb'
替换为您name
的程序值。
这是一个显示它工作的小提琴:http://sqlfiddle.com/#!9/689db1/1
答案 1 :(得分:0)
尝试使用此查询:
插入用户(name,subid)选择名称,if((从用户中选择count('em>),其中name ='naresh')> 0,(从用户中选择count(),其中name ='naresh'),0)来自用户
祝你好运