MySQL插入查询值不匹配的地方

时间:2017-12-04 15:53:59

标签: mysql

我想在mySQL中插入一些数据:

INSERT INTO user_data (user_id,value) VALUES (1,2)

有没有办法确保用户的相同值不存在?如果user_id的值不存在,我希望它只插入数据吗?

所以基本上user_id可以有多个值。我知道这可以做到独特的领域。但我希望用SQL查询来做到这一点

2 个答案:

答案 0 :(得分:0)

您可以将NOT EXISTSINSERT声明结合使用。

INSERT INTO user_data (`user_id`, `value`) 
SELECT DISTINCT 1,2 
FROM `user_data`
WHERE NOT EXISTS (
    SELECT * FROM `user_data` 
    WHERE `user_id` = 1 AND `value` = 2
);

这确保它仅在尚不存在时插入。

答案 1 :(得分:0)

正如其他人在评论中指出的那样,如果您可以在表格中添加UNIQUE键然后只需使用INSERT INTO ... ON DUPLICATE KEY UPDATE

就会更容易/更好

但是既然你说这不是一个选项,那么它也可以起作用

INSERT INTO user_data (user_id, value)
SELECT * FROM (SELECT 1, 2) AS tmp
WHERE NOT EXISTS (
    SELECT user_id FROM user_data WHERE user_id = 1 AND value = 2
) LIMIT 1;