0

ここにいくつかのメダルを獲得するための簡単な質問があります:):私は3つのテーブルを持っています:各エントリが一意のIDを持つ連絡先情報を保持する「連絡先」です。2 番目のテーブル「groups」には、各グループの名前とグループ ID が格納されます。最後の「contacts_groups」は、各連絡先をグループにバインドします。これには、contact_id と group_id の 2 つの列しかありません。

問題は、グループに割り当てられていないすべての連絡先を選択する MySQL クエリを単一のステートメントでどのように記述するかです。つまり、「contacts_groups」テーブルにリストされていない ID の連絡先ですか?

4

3 に答える 3

2
select * from contacts c
left outer join contacts_groups cg on c.id = cg.contact_id 
where cg.contact_id is null
于 2012-10-29T23:28:50.310 に答える
1

完全にするために、別の解決策を次に示します。

SELECT * FROM contacts
WHERE contact_id NOT IN (SELECT contact_id FROM contacts_groups)

しかし、MySQL は左結合または相関サブクエリをより効率的に実行する傾向があると思います。

于 2012-10-29T23:38:30.620 に答える
1
SELECT * FROM contacts c
WHERE NOT EXISTS (SELECT * FROM contacts_groups cg
                  WHERE cg.contact_id = c.contact_id)
于 2012-10-29T23:30:15.377 に答える