I get two different answers when I run the two following queries. I would really like to know why. Is it the LEFT JOIN? Is it the order of operations? Could this occur in other JOIN types?
First Query
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);
Output
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
Second Query
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;
Output
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
Original code from http://narendra86.blogspot.com/2013/10/top-80-sql-query-interview-questions.html