3

次の SQL に 2 つの異なる結果セットがある理由を誰かが説明できますか?

SQL 1-

SELECT e.employee_id,e.first_name,
e.department_id,
d.department_id,
d.department_name
FROM employees e  RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) where d.department_name='Treasury'; 

結果: d.department_name='Treasury' のレコードのみ。

SQL 2-

SELECT e.employee_id,e.first_name,
e.department_id,`enter code here`
d.department_id,
d.department_name
FROM employees e  RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) and d.department_name='Treasury'; 

結果: すべての d.deparment_name 値を含むレコード。

4

3 に答える 3

3

このon条件は、結合されたテーブルで一致する行を検索するときに使用されます。外部結合(右結合または左結合)を使用すると、条件に一致しない行がon結果セットに含まれる可能性があります。

where条件は、選択したすべての行に適用されます。テストに失敗した行whereは、結果セットから除外されます。

于 2013-02-25T10:49:02.773 に答える
1

1 つ目は、department_name が「Treasury」である結合レコードを返すため、department テーブルのすべてのレコードが結合されますが、2 つ目は、department_name が「Treasury」である departments テーブルのレコードのみが結合されることを意味します。

于 2013-02-25T10:46:04.940 に答える
0

まず、joinとallを適用した後にフェスティングされたすべてのレコードに条件を設定し、最終的に返される結果に適用します。

2つ目は、右結合であるため結合条件が一致しない場合でも、右テーブルからすべてのレコードを返します。

于 2013-02-25T10:48:28.227 に答える