プログラム学習室 http://studyhallweb.com/

Access SQL テーブルの比較

テーブルの比較結合(JOIN)

片方のテーブルに一致するレコード無くても抽出させる方法です。

SELECT NameList.ID, NameList.Name, Email.MailAddress
FROM NameList LEFT JOIN Email ON NameList.ID = Email.ID;

NameListテーブルにデータがあればEmailテーブルにデータがなくてもレコードが抽出されます。
WHEREで以下のように指定するとEmailテープルに該当レコードがないと抽出されません。
SELECT NameList.ID, NameList.Name, Email.MailAddress
FROM NameList, Email
WHERE NameList.ID = Email.ID;

テーブルへの存在確認(EXISTS)

片方のテーブルに存在しないレコードだけ抽出させる方法です。

SELECT NameList.ID, NameList.Name
FROM NameList
WHERE NOT EXISTS(SELECT * FROM Email WHERE NameList.ID = Email.ID);

Emailテーブルに存在しないIDのデータだけNameListテーブルから抽出されます。
NOT EXISTS( )のNOTを外すと存在するものだけの抽出になります。