用于添加没有重复项的所有用户的mysql解决方案

时间:2015-12-16 14:12:17

标签: mysql sql

是否有针对以下场景的纯mysql解决方案?

我想基本上将所有网站用户添加为特定定义用户的关注者

下表的结构就是这样

id, user_id, other_id

我能够使用此查询添加所有用户,但我无法弄清楚如何避免添加已存在的后续内容(重复)。在这种情况下,1是用户,我希望所有其他用户都关注

INSERT INTO follows(user_id, other_id) 
SELECT 
id,
1 as other_id 
FROM users

2 个答案:

答案 0 :(得分:1)

插入尚不存在的行......

INSERT INTO follows(user_id, other_id) 
SELECT id, 1 as other_id 
FROM users
WHERE NOT EXISTS(SELECT ! FROM follows WHERE user_id = users.Id and other_id = 1)

答案 1 :(得分:1)

您可以通过制作唯一键约束来实现。将user_id设为唯一或user_idother_id的组合

INSERT INTO follows(user_id, other_id) 
SELECT id, 1 as other_id 
FROM users ON DUPLICATE KEY UPDATE other_id = VALUES(other_id)