【发布时间】:2021-03-09 12:50:42
【问题描述】:
我正在尝试运行具有大约 10 个 AND NOT EXISTS 条件的复杂代码。我可以用 INNER Join 代替吗?
-----Initial Query---------
Select a FROM A1 WHERE
NOT EXISTS (select 1 from B1 WHERE A1.a = B1.a)
AND NOT EXISTS (select 1 from C1 WHERE A1.a = C1.a)
AND NOT EXISTS (select 1 from D1 WHERE A1.a = D1.a)
AND NOT EXISTS (select 1 from E1 WHERE A1.a = E1.a)
AND NOT EXISTS (select 1 from F1 WHERE A1.a = F1.a)
AND NOT EXISTS (select 1 from G1 WHERE A1.a = G1.a)
AND NOT EXISTS (select 1 from H1 WHERE A1.a = H1.a)
AND NOT EXISTS (select 1 from I1 WHERE A1.a = I1.a)
----Processed Query-------
SELECT a FROM A1 WHERE a NOT IN (
Select a FROM A1 a1 WHERE
INNER JOIN B1 b1 WHERE a1.a = b1.a)
INNER JOIN C1 c1 WHERE a1.a = c1.a)
INNER JOIN D1 d1 WHERE a1.a = d1.a)
INNER JOIN E1 e1 WHERE a1.a = e1.a)
INNER JOIN F1 f1 WHERE a1.a = f1.a)
INNER JOIN G1 g1 WHERE a1.a = g1.a)
INNER JOIN H1 h1 WHERE a1.a = h1.a)
INNER JOIN I1 i1 WHERE a1.a = i1.a))
谢谢..
【问题讨论】:
-
也许更大的问题与您的架构有关。设计不佳的模式将需要笨拙且低效的代码。
-
@SMor 这只是一个关于我的真实查询的示例......我只是为它使用了不同的列名。
标签: sql-server tsql join