我有两个表users
(id, username, etc...)和user_contacts
(id, userid, contactid, etc...)。
鉴于我user
的 id 为 84,为了将缺失的记录插入到84 与所有其他用户user_contacts
相关联,最有效的查询是什么?user
我有两个表users
(id, username, etc...)和user_contacts
(id, userid, contactid, etc...)。
鉴于我user
的 id 为 84,为了将缺失的记录插入到84 与所有其他用户user_contacts
相关联,最有效的查询是什么?user
鉴于您最近的评论,那么这应该有效:
insert into user_contacts (userid, contactid)
select u.id, 84
from users u
left join user_contacts uc on u.id = uc.userid and uc.contactid = 84
where uc.id is null
这将在 user_contacts 表中为当前没有联系人 ID 为 84 的行的每个用户插入一行。确保正确指定列。
或者,您可以使用NOT IN
or NOT EXISTS
。例如,
insert into user_contacts (userid, contactid)
select u.id, 84
from users u
where u.id not in (
select userid
from user_contacts
where contactid = 84)