我有SQL代码,应如何更改它以仅在表中不存在数据时才插入数据。感谢您的回答:)
INSERT INTO stages_done(id_booked_proj, id_stage)
SELECT booked_proj.id, stages.id_st
FROM booked_proj, stages
WHERE booked_proj.name='home' AND stages.name_st= 'sm'"
最佳答案
您可以使用INSERT IGNORE
,这样如果导致重复的键,则不会插入该行:
INSERT IGNORE INTO stages_done(id_booked_proj, id_stage)
SELECT booked_proj.id, stages.id_st
FROM booked_proj, stages
WHERE booked_proj.name='home' AND stages.name_st= 'sm'"
具有PRIMARY KEY或UNIQUE约束的列中的任何重复键都将被忽略。
如果您具有写权限,则可以向表中添加约束,如下所示:
ALTER TABLE `stages_done` ADD UNIQUE `id_booked_proj_id_stage_index` (`id_booked_proj`, `id_stage`);
id_booked_proj_id_stage_index
可以是您选择的任何名称,只要它是唯一的即可。关于mysql - 插入数据(如果不存在),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44141002/