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

Access SQL 複数のSELECT文の結合

条件によって違うフィールドの値を適用する

UNIONによって異なるSELECT文を結合し抽出します。

SELECT FA FROM T1 WHERE FX = 0
UNION
SELECT FB FROM T1 WHERE FX = 1;

T1テーブルのFXフィールドの値が0であればFAフィールドの値を、1であればFBフィールドの値を抽出します。
FAとFBの型は同じでなくてはなりません。

2つのテーブルを比較する

UNIONを使って2つのテーブルから違うレコードだけを抽出できます。

SELECT T1.Key, T1.Value, 'T1' AS Table
FROM T1, T2
WHERE (T1.Key = T2.Key) AND (T1.Value <> T2.Value)
UNION
SELECT T2.Key, T2.Value, 'T2' AS Table
FROM T1, T2
WHERE (T1.Key = T2.Key) AND (T1.Value <> T2.Value);

T1テーブルとT2テーブルでKeyフィールドの値は同じであるけれども、Valueフィールドの値が異なるレコードを抽出します。
UNIONの前後でT1テーブルとT2テーブルからそれぞれ該当のレコードを抽出しますが、どちらのテーブルのレコードか分かるようにTableというフィールドを追加しテーブル名を表示しています。('T1' as Tableの部分)