我想从表T1中选择所有记录,其中列A和B中的值对于表T2中的列C和D没有匹配的元组.
在使用两列的mysql"Where not in"中,我可以阅读如何使用表单选择A,B来自T1,其中(A,B)不在(SELECT C,D从T2),但在T-SQL中失败对我来说导致"语法不正确','.".
那我该怎么做?
Tom*_*lak 32
使用相关的子查询:
...
WHERE
NOT EXISTS (
SELECT * FROM SecondaryTable WHERE c = FirstTable.a AND d = FirstTable.b
)
Run Code Online (Sandbox Code Playgroud)
确保在SecondaryTable上有一个复合索引(c, d),除非该表不包含很多行.
您不能使用WHERE IN类型语句执行此操作.
相反,您可以LEFT JOIN到目标表(T2)并选择T2.ID所在的位置NULL.
例如
SELECT
T1.*
FROM
T1 LEFT OUTER JOIN T2
ON T1.A = T2.C AND T1.B = T2.D
WHERE
T2.PrimaryKey IS NULL
Run Code Online (Sandbox Code Playgroud)
只返回T1中没有T2对应行的行.