如果存在则更新mysql,否则在我没有唯一键时更新

时间:2015-06-08 05:10:33

标签: php mysql database insert

以前曾问过类似的问题,答案是使用

INSERT INTO table ... ON DUPLICATE KEY UPDATE ...

但是,这要求重复键具有唯一属性。如果我没有并且不能拥有独特的财产怎么办?

详情如下: 我有一个4列的表:

id  col2 col3 count

如果同时存在col2col3值,则增加计数,否则插入此项。我怎么能用一个MySQL查询呢?

更新

我发现这个问题之后才意识到我可以为多个列设置unqiue键。例如,如果我不想让col2和col3重复,我可以执行以下sql以使组合列成为唯一的:

ALTER TABLE `table` ADD UNIQUE unique_index (`col2`, `col3`);

3 个答案:

答案 0 :(得分:1)

您可以在此处使用复制MYSQL Reference上的插入。

INSERT INTO table (col1,col2,`count`) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE `count`=(col2+col3) 

答案 1 :(得分:0)

你想要这个吗?

    IF EXISTS(--Query to check for the existence of your condition here)
    BEGIN
      --UPDATE HERE
    END ELSE
    BEGIN
      --INSERT HERE
    END

答案 2 :(得分:0)

Dainy,

我认为您希望插入记录,如果它不存在则更新特定的列值,对吧..?

为此,您需要创建一个这样的过程:

delimiter $$
create procedure update_or_insert()
begin
  IF EXISTS (SELECT * FROM tablename WHERE col2 = 'something2' AND col3 = 'something3') THEN
    UPDATE tablename SET count = count + 1;
  ELSE 
    INSERT INTO tablename (col2, col3, count) VALUES ('something2', 'something3', 'something4');
  END IF;
end $$
delimiter ;

并调用该程序,如:

call update_or_insert(); 

希望这可以帮助你。

谢谢!