示例场景:
TABLE_A 包含一个名为 ID 的列,并且还包含重复的行。还有一个名为 ID_TABLE 的表,其中包含 ID。假设 ID_TABLE 中没有重复项 -
如果我做:
SELECT * FROM TABLE_A
INNER JOIN ID_TABLE ON ID_TABLE.ID = TABLE_A.ID
结果集中会有重复。但是,如果我这样做:
SELECT * FROM TABLE_A
WHERE TABLE_A.ID IN (SELECT ID_TABLE.ID FROM ID_TABLE)
结果集中不会有任何重复。
有谁知道为什么该JOIN
子句允许重复而该IN
子句不允许?我原以为他们做了同样的事情。
谢谢