【发布时间】:2013-12-27 02:44:20
【问题描述】:
我需要在表中插入唯一值,并且需要记录的 id,需要在关系表中插入这些 id, 需要查询插入记录,如果不存在则返回插入的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 确实有更新或插入到 'tag' 语句
-
可能应该只编写一个存储过程,在这种情况下首先进行选择。注意:获取已经存在的 ID 很容易。获取使用
ON DUPLICATE KEY UPDATE后创建的新记录的 ID 有点像噩梦。
标签: mysql sql sql-insert