JOIN句の条件にID=ID(結合条件)以外の制限条件を記述する

参考書でJOIN句の説明を見ると[SQL]SELECT A.*, B.*
FROM A
INNER JOIN B
ON A.ID = B.ID[/SQL]

といった記述をよく見かけます。
そのためJOIN句の条件はID=IDのような結合条件だけしか書けないものと思っていましたが、どうやら違うようです。

[SQL]SELECT A.*, B.*
FROM A
INNER JOIN B
ON A.ID = B.ID
AND B.AGE = 30[/SQL]
このようにBテーブルに対する制限条件も一緒に書くことができます。

これは[SQL]SELECT A.*, B.*
FROM A
INNER JOIN B
ON A.ID = B.ID
WHERE B.AGE = 30[/SQL]
とは当然結果が異なります。

前者はB.AGE=30でフィルタリングした後にJOINしていますが、
後者はJOINした後にB.AGE=30のフィルタリングをしています。

ちなみに前者は[SQL]SELECT A.*, B.*
FROM A
INNER JOIN (SELECT * FROM B WHERE B.AGE = 30) B
ON A.ID = B.ID[/SQL]
と記述することもできるようです。
というか私はこちらの方法しか知りませんでした。

どちらが読みやすいでしょうか?

スポンサーリンク
レクタングル大




フォローする

スポンサーリンク
レクタングル大