我想知道为什么在exists子查询中,如果要在一个键上连接两个表,则必须在WHERE子句中进行连接而不是在FROM子句中进行连接。
以下是我的示例:
在FROM子句中进行连接:
第一个查询给出了0个结果,我知道这是不正确的,而第二个查询给出了我期望看到的成千上万的结果。
有人能解释一下为什么存在子查询中连接发生的位置很重要吗?如果你将子查询取出并运行,它们实际上会给出相同的结果。
这会帮助我记住在使用exists时不要继续犯这个错误。
提前致谢。
以下是我的示例:
在FROM子句中进行连接:
SELECT payer_id
FROM Population1
WHERE NOT EXISTS
(Select *
From Population2 join Population1
On Population2.payer_id = Population1.payer_id)
WHERE子句中的JOIN:
SELECT payer_id
FROM Population1
WHERE NOT EXISTS
(Select *
From Population2
WHERE Population2.payer_id = Population1.payer_id)
第一个查询给出了0个结果,我知道这是不正确的,而第二个查询给出了我期望看到的成千上万的结果。
有人能解释一下为什么存在子查询中连接发生的位置很重要吗?如果你将子查询取出并运行,它们实际上会给出相同的结果。
这会帮助我记住在使用exists时不要继续犯这个错误。
提前致谢。
Population2
中没有相应记录的所有行在Population1
中的情况。 - Anand