以前曾问过类似的问题,答案是使用
INSERT INTO table ... ON DUPLICATE KEY UPDATE ...
但是,这要求重复键具有唯一属性。如果我没有并且不能拥有独特的财产怎么办?
详情如下: 我有一个4列的表:
id col2 col3 count
如果同时存在col2
和col3
值,则增加计数,否则插入此项。我怎么能用一个MySQL查询呢?
更新
我发现这个问题之后才意识到我可以为多个列设置unqiue键。例如,如果我不想让col2和col3重复,我可以执行以下sql以使组合列成为唯一的:
ALTER TABLE `table` ADD UNIQUE unique_index (`col2`, `col3`);
答案 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();
希望这可以帮助你。
谢谢!