0

次のテーブルがあります。

Contacts
      contact_id, contact_name, etc.
assigned_lists
      contact_id, list_id

各連絡先は、列に格納されている複数のリストに関連付けることができassigned_listsます。

どのリストにも関連付けられていない連絡先がたくさんあります。contact_idリストに関連付けられていないすべての を に挿入するにはどうすればよいassigned_listsですか?

4

3 に答える 3

3

試してみてください:

INSERT INTO assigned_lists (contact_id, list_id)
SELECT contact_id, 24
FROM Contacts
WHERE contact_id NOT IN (
  SELECT DISTINCT contact_id
  FROM assigned_lists
)
于 2013-06-29T00:24:43.717 に答える
2

以下を試すことができます

INSERT INTO assigned_lists (contact_id, list_id)
SELECT contact_id, list_id = 1234
FROM Contacts C
WHERE NOT EXISTS (SELECT 1 FROM assigned_lists A WHERE A.contact_id  = C.contact_id )

not exists 句は、not in 句よりもパフォーマンスが優れていることを覚えておいてください。

同じことについての詳細な説明は、NOT IN vs NOT EXISTSにあります。

于 2013-06-29T02:58:25.673 に答える
2
INSERT INTO assigned_lists (contact_id, list_id)
SELECT contact_id, @yourNewListID
FROM Contacts
WHERE contact_id NOT IN (SELECT contact_id FROM assigned_lists)

SQL フィドルの例: http://sqlfiddle.com/#!3/d59d1e/1

于 2013-06-29T00:34:36.623 に答える