如果记录不存在,我需要插入一条新记录,但如果它存在则 我需要从该行中选择一个特定的列值并根据它进行更新。
我已设法写下面的查询,它在更新时使用重复插入/更新
insert into securities(symbol, buyerquan, sellerquan , totaltradedquan) values('BANKBARODA', 73, 0, 4290270) on duplicate key update buyerquan=buyerquan+VALUES(buyerquan),sellerquan=sellerquan+VALUES(sellerquan),totaltradedquan=totaltradedquan+VALUES(totaltradedquan)
这是我的sqlfiddle http://sqlfiddle.com/#!2/aaf91/5
我的要求是
如果记录存在,我如何获取现有列,进行比较然后进行更新?
我们是否需要编写另一个SQL查询来获取现有列值?
如果存在记录,则获取现有列,比较它然后进行更新或者只是插入新记录
我们可以在同一个查询中完成所有这些吗?
任何人都可以帮助我。
答案 0 :(得分:1)
Mysql有一个快捷方式,它被称为“INSERT ... ON DUPLICATE KEY UPDATE”
http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.html
答案 1 :(得分:0)
你的问题很模糊。例如,您没有指定用于定义副本的列。根据您的查询,我猜您的意思是symbol
。
您的查询是:
insert into securities(symbol, buyerquan, sellerquan , totaltradedquan)
values('BANKBARODA', 73, 0, 4290270)
on duplicate key update buyerquan = buyerquan+VALUES(buyerquan),
sellerquan = sellerquan + VALUES(sellerquan),
totaltradedquan = totaltradedquan + VALUES(totaltradedquan);
这似乎是正确的语法(对于大多数人来说,这是问题的难点)。唯一缺少的是唯一性的规范:
create unique index securities_symbol on securities(symbol);
您还可以使用create table
关键字在unique
语句中指定此条件。