mysql - If Not Exists 语法 MySQL

标签 mysql sql

我在 MySQL 中有以下简单的插入查询

insert into eventimages (eventid, imageid) values (x, y)

我想对其进行修改,以便插入仅在未创建重复行时发生。 我猜我需要在某个地方包含类似

的内容
if not exists (select * from eventimages where eventid = x and imageid = y)

任何人都可以帮助语法。

干杯

最佳答案

防止重复的“正确”方法是在列对上放置唯一约束/索引:

create unique index eventimages_eventid_imageid on eventimages(eventid, imageid);

那么这个条件就会一直保证为真。常规插入将失败,创建副本的 update 也会失败。以下是忽略此类错误的两种方法:

insert ignore into eventimages (eventid, imageid)
    values (x, y);

这将忽略插入中的所有 错误。那可能有点矫枉过正。您还可以:

insert into eventimages(eventid, imageid)
    values (x, y)
    on duplicate key update eventid = x;

update 语句是空操作。目的只是为了抑制重复键错误。

关于mysql - If Not Exists 语法 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22196615/

相关文章:

mysql - 获取列与记录的总和

自动生成数据的 MySql 列,比 UUID 长

php - PDO 的 LastInsertId 实际上是如何工作的?

mysql - 你可以在mysql的WHERE子句中使用别名吗?

c# - 显示每个请求的所有 linq sql 查询

sql - 从 MySql 移植到 T-Sql。任何 INET_ATON() 等价物?

mysql - 从使用物化路径编码树的表中选择,按深度优先排序(无递归/ltree)

sql - 你怎么称呼你的美国国家表?

php - 在 'country_id' 子句中获取列 'where' 是不明确的 - cakephp 1.3 中的搜索查询错误

mysql - MySQL中表的垂直分区