如果不存在,请插入

时间:2020-03-28 09:44:09

标签: mysql phpmyadmin

如果任何行中都不存在值,是否可以插入任何方法? 假设我有一张桌子:

id(auto_increment)|id_user|id_translation
------------------------------------------
39                |5      | 20
-

尝试

INSERT IGNORE INTO `usertranslation`(`id_translation`, `id_user`) VALUES ('20','5')
WHERE not EXISTS (
    SELECT * from `usertranslation`
    WHERE `id_translation` = '20' AND
    `id_user` = '5' )

与replace相似,但对我没有任何作用

2 个答案:

答案 0 :(得分:1)

为防止表中的重复,必须使用UNIQUE constraints。 所以首先您需要像这样更改表:

ALTER TABLE `usertranslation`
ADD CONSTRAINT `unique_user_transaction` UNIQUE KEY(`id_translation`, `id_user`);

更改表格后,您可以使用:

INSERT IGNORE INTO `usertranslation`(`id_translation`, `id_user`) VALUES ('20','5');

请注意INSERT IGNORE可以防止尝试插入重复项时出错,但也可以增加自动递增字段。

答案 1 :(得分:0)

可以使用:

INSERT IGNORE INTO `usertranslation`(`id_translation`, `id_user`) VALUES ('20','5')

如果存在与新行冲突的约束,则不会插入新行(无错误),
INSERTSELECT VALUES INSERT INTO `usertranslation`(`id_translation`, `id_user`) SELECT '20', '5' WHERE NOT EXISTS ( SELECT 1 from `usertranslation` WHERE `id_translation` = '20' AND `id_user` = '5' )