比较 2 个结果集

Compare 2 result sets

我在 SQL Server 2008 中工作。我有 2 个问题。第一个是:

SELECT
col1,
col2
FROM tableA

这个查询的典型结果集是:

col1 col2

设施A 10

设施 B 20

第二个是:

SELECT
colx,
COUNT(*) AS 'Totals'
FROM tableB
GROUP BY colx

这个查询的典型结果集是:

colx 总计

设施A 10

设施 B 50

我想 return 第一个结果集中的所有记录,其中 col2 和第二个结果集中的 Totals 之间的值不同,对于 col1 和 colx 之间的对应值。例如,给定的例子应该 return:

col1 col2

设施 B 20

如何实现?

听起来您想使用 EXCEPT clause。这将逐列比较每一行,如果两个数据集之间存在相同的行,它将被排除:

SELECT col1, col2
FROM tableA

EXCEPT

SELECT colx, COUNT(*) AS 'Totals'
FROM tableB
GROUP BY colx