我们说我有这张桌子
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
。拥有数千条记录的现有数据库,存在爱好中已存在重复的风险......
但是从现在开始..当添加新记录时,我想避免添加,如果已经存在..
谢谢。
答案 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;