0

私は2つのテーブルusers (id, username, etc...)user_contacts (id, userid, contactid, etc...)を持っています。

userID が 84 であることを考えると、不足しているレコードを挿入して84 を他のすべてのユーザーuser_contactsと関連付けるために最も効率的なクエリは何でしょうか?user

4

1 に答える 1

1

あなたの最新のコメントを考えると、これはうまくいくはずです:

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

これにより、現在 contactid 84 の行を持たない各ユーザーの user_contacts テーブルに行が挿入されます。列を正しく指定してください。

NOT INまたは、またはを使用することもできます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)
于 2013-04-01T13:58:41.783 に答える