次の2つのクエリを実行すると、2つの異なる回答が得られます。私は本当に理由を知りたいです。 LEFT JOINですか?それは操作の順序ですか?これは他のJOIN型でも発生しますか?JOIN句とWHERE句の比較
最初のクエリ
SELECT
First_Name
, E.Employee_ID
, I.Employee_REF_ID
FROM Employee AS E
LEFT JOIN Incentives AS I
ON (E.Employee_ID = I.Employee_REF_ID) AND (I.Employee_Ref_Id IS NOT NULL);
出力
1. First_Name Employee_ID Employee_REF_ID
2. John 1 1
3. John 1 1
4. Michael 2 2
5. Michael 2 2
6. Roy 3 3
7. Tom 4 NULL
8. Jerry 5 NULL
9. NULL 6 NULL
10. TestName1 7 NULL
11. Lname% 8 NULL
2番目のクエリ
SELECT
First_Name
, E.Employee_ID
, I.Employee_REF_ID
FROM Employee AS E
LEFT JOIN Incentives AS I
ON (E.Employee_ID = I.Employee_REF_ID)
WHERE I.Employee_Ref_Id IS NOT NULL;
出力
1. First_Name Employee_ID Employee_REF_ID
2. John 1 1
3. Michael 2 2
4. Roy 3 3
5. John 1 1
6. Michael 2 2
オリジナルコードhttp://narendra86.blogspot.com/2013/10/top-80-sql-query-interview-questions.html
より良い私たちに参加しているテーブルのサンプルデータを表示 - 詳細については、このstackoverflowの答えは
チェック。 – ydoow
LEFT結合は、結合述部に一致するものがない場合、NULL列を戻します。 WHEREフィルタを追加して、左結合テーブルのフィールドがNULLでないかどうかを確認することで、INNER JOINを再作成したことがあります。 –
それはかなり鋭いです。ありがとうございました。 –