如果不是EXISTS则INSERT INTO,如果EXISTS则增加

时间:2014-03-31 10:47:41

标签: mysql

我的问题是。我在MySQL中使用字段“id”,“title”,“popular”来表“流行”。我需要将信息插入字段“title”,如果信息不存在或增加“流行度”值,如果信息存在。这样做的最佳做法是什么?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

INSERT INTO popular (title, popularity) VALUES (:the_title, 1)
ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id), popularity = popularity + 1

确保您对title

有唯一约束

id = LAST_INSERT_ID(id)允许您使用id(或MySQL API的等效函数)获取您插入/更新的记录的LAST_INSERT_ID。如果您不需要id,可以将其从UPDATE列表中删除。

答案 2 :(得分:0)

示例代码:

if exists (select * from contact where name = @name) then
    select -1;
else
    insert into contact(name) values(@name);
    select last_insert_id();
end if;

参考:

http://ask.sqlservercentral.com/questions/88038/best-mysql-practice-to-insert-a-record-if-it-does.html

http://bugs.mysql.com/bug.php?id=19243

http://mikefenwick.com/blog/insert-into-database-or-return-id-of-duplicate-row-in-mysql/