MySQL - 仅在特定值不存在时插入

时间:2017-08-09 22:08:03

标签: mysql

我们说我有这张桌子

ID  |   Name    |   Hobby
---------------------------
1   |   Alex    |   fishing
2   |   Alex    |   soccer
3   |   Nick    |   bike
4   |   George  |   hike

ID - 是独一无二的。 Hobby - 不是唯一的(需要将其保持为非唯一)

插入记录:

INSERT INTO my_table (ID, Name, Hobby) VALUES ('5', 'Christina', 'bike')

如果我需要在bike列中根本不存在Hobby值时插入记录,如何修改查询?

Anotherwords:

  • VALUES ('5', 'Christina', 'bike') - 不会插入3 | Nick | bike存在
  • 将插入
  • VALUES ('5', 'Christina', 'cooking'),因为cooking列中根本不存在Hobby

拥有数千条记录的现有数据库,存在爱好中已存在重复的风险......

但是从现在开始..当添加新记录时,我想避免添加,如果已经存在..

谢谢。

2 个答案:

答案 0 :(得分:1)

最简单的解决方案可能是将爱好列更改为唯一。这样,您将强制您的数据库只插入独特的爱好。另一种解决方案可能是在插入/更新之前使用触发器。

答案 1 :(得分:-2)

基于MySQL: Insert record if not exists in table

但有一些更正(以修复重复的错误)

以下查询适用于我。

INSERT INTO my_table (ID, Name, Hobby)
SELECT * FROM (SELECT '5' AS ID, 'Christina' AS Name, 'cooking'  AS Hobby) AS tmp
WHERE NOT EXISTS (
    SELECT name FROM table_listnames WHERE Hobby= 'cooking'
) LIMIT 1;