是否有针对以下场景的纯mysql解决方案?
我想基本上将所有网站用户添加为特定定义用户的关注者
下表的结构就是这样
id, user_id, other_id
我能够使用此查询添加所有用户,但我无法弄清楚如何避免添加已存在的后续内容(重复)。在这种情况下,1是用户,我希望所有其他用户都关注
INSERT INTO follows(user_id, other_id)
SELECT
id,
1 as other_id
FROM users
答案 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_id
和other_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)