【发布时间】:2021-08-05 19:14:20
【问题描述】:
我打算通过三个表比较两个表。我的查询如下
Select count(*)
from tableA a
join tableB b
on a.A_ID =b.A_ID
full join tableC c
on c.B_ID=b.B_ID
where a.A_ID is null or c.B_ID is null
如果count为zore,则tableA和TableC匹配,否则,这两个表不匹配
运行查询需要很长时间。我们有办法快速比较 tableA 和 tableC 吗?
问题:如何比较tableA和tableC?
【问题讨论】:
-
不清楚你想做什么——你能描述一下你的预期输出吗?
-
定义“很长一段时间”。发布查询计划
-
是否作为两个以 B 结尾的左连接的并集?
-
如果tableA匹配tableC,期望输出应该为零
-
where a.A_ID is null您的查询内部在此列上将 A 连接到 B,因此此过滤器永远不会为真。不明白为什么要使用完全联接来计算 - 我怀疑您有一个 XY problem 。您的示例数据可能会产生误导,因为您的表包含一组一致的值 - 您不会“看到”任何外部连接的效果。
标签: sql sql-server tsql