这是我在一次采访中得到的一个问题。他们让我描述以下 3 个场景的差异。
查询 #1:
SELECT p.name, c.email
FROM PersonalDetails as p
JOIN ContactDetails c
ON p.id = c.id
WHERE p.region = 'UK'
查询 #2
SELECT p.name, c.email
FROM PersonalDetails as p
LEFT JOIN ContactDetails c
ON p.id = c.id
WHERE p.region = 'UK'
查询 #3:
SELECT p.name, c.email
FROM PersonalDetails as p
LEFT JOIN ContactDetails c
ON p.id = c.id AND p.region = 'USA'
我的答案-第一个是内连接,第二个是左连接。因此,第一个查询将只返回两个表中的匹配记录,第二个查询将返回两个表中的匹配记录以及左表中的所有记录。
他们的答案 - 前 2 个查询将返回相同的结果。第三个查询将作为内部连接执行
谁能解释这是怎么发生的……???
提前致谢