如果有相同的记录,我增加数值,如果没有,则插入想要做0

时间:2009-05-27 02:45:43

标签: sql mysql

请帮帮我。

select * from hoge where id=xxx; 

如果有数据,我这样做,但是虽然我实现了这一步,但是如果在程序中,并且插入hoge set data = 0很麻烦,如果更新hoge set data = data + 1,a结果是0行。

你可能不是通过SQL的一击来实现这个程序吗? 将hoge select id,data + 1替换为来自hoge的数据,其中id = x; 当它是这个SQL时,结果不可用,因为在NULL的情况下没有输入数据。

毕竟不会是if句子中的复数还是SQL的梳子? 如果有更简单的方法,请教它。

人们提前感谢你。

2 个答案:

答案 0 :(得分:3)

如果我正确地理解了这个问题(我不认为OP是母语为英语的人),你可以使用ON DUPLICATE KEY在MySQL中执行此操作。

INSERT INTO table 
  (column1, column2, ...)
VALUES
  ('initial value for column1', 'initial value for column2', ...)
ON DUPLICATE KEY UPDATE
  column1 = column1 + 1, column2 = 'new value for column2';

答案 1 :(得分:0)

您似乎在询问如何创建一个行(如果它尚不存在),或者如果它确实存在,则更新其中的一个字段。

正常方法(对于不提供某种形式的UPSERT语句的DBMS'):

insert into TBL(keycol,countcol) values (key,-1)
update TBL set countcol = countcol + 1 where keycol = key

您需要忽略第一行上的任何错误(如果该行已存在,则会发生此错误)。然后第二个语句将更新它。

最初插入一个零条目也是不寻常的,因为你通常在第一次添加一个'东西'。在这种情况下,插入会将值设置为0,而不是-1。