MySQL:如果不存在插入记录,否则返回记录id

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

我需要在表中插入唯一的值,并且需要记录的ID,需要在关系表中插入那些id,如果不存在,需要查询来插入记录,返回inset id,如果存在,则返回记录主键(Id)。

我想要对多个值这样做,像橙色,芒果,香蕉,像批插入。

模式:

------------
id | tag   |
------------
1  | orange|
------------
INSERT INTO `tags` (`tag`) 
SELECT 'myvalue1' 
FROM tags
WHERE NOT EXISTS (SELECT 1 FROM `tags` WHERE `tag`='myvalue1') 
LIMIT 1

发布这个问题是为了找出一些优化的解决方案,我不想在代码中使用额外的循环来匹配db中的值。

提问于
用户回答回答于

插入Mysql表或者更新表(如果它存在的话)

用户回答回答于

在文档页上有一个示例INSERT ... ON DUPLICATE KEY UPDATE:

查询如下所示:

INSERT INTO `tags` (`tag`) VALUES ('myvalue1')
  ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), `tag`='myvalue1';
SELECT LAST_INSERT_ID();

扫码关注云+社区