30

我在 MS SQL 中有 2 个查询,它们使用 COUNT 函数返回许多结果。

我可以运行第一个查询并获得第一个结果,然后运行另一个查询以获得另一个结果,减去它们并找到结果;但是有没有一种方法可以结合所有 3 个功能并获得 1 个总体结果

如:运行 sql1 运行 sql2 运行 SQL3 (sql1-sql2)?....

我用 xxxx 作为函数尝试了它们,但没有运气。

4

11 回答 11

48

您应该能够为此使用子查询:

SELECT
    (SELECT COUNT(*) FROM ... WHERE ...)
  - (SELECT COUNT(*) FROM ... WHERE ...) AS Difference

刚刚测试了一下:

Difference
-----------
45

(1 row(s) affected)
于 2009-10-19T14:44:22.613 回答
29
SELECT (SELECT COUNT(*) FROM t1) - (SELECT COUNT(*) FROM t2)
于 2009-10-19T14:46:30.747 回答
11

这将返回差异

SELECT COUNT(Attribute) - COUNT(DISTINCT Attribute) FROM table_name;
于 2019-11-26T21:41:01.373 回答
4

我知道这是一篇旧帖子,但这是另一个最适合我需要的解决方案(在 firebird 上测试)

SELECT c1-c2 from (select count(*) c1 from t1), (SELECT COUNT(*) c2 from t2);
于 2016-12-09T08:12:04.120 回答
2

查询如下:

SELECT (select COUNT(FIRSTNAME) FROM TRMDW.EMPLOYEE1) - (SELECT COUNT(DISTINCT FIRSTNAME) FROM TRMDW.EMPLOYEE1) as difference from dual;
于 2018-10-03T13:42:59.927 回答
1
SELECT
   t1.HowManyInTable1
  ,t2.HowManyInTable2
  ,t1.HowManyInTable1 = t2.HowManyInTable2  Table1_minus_Table2
 from (select count(*) HowManyInTable1 from Table1) t1
  cross join (select count(*) HowManyInTable2 from Table2) t2
于 2009-10-19T14:51:40.457 回答
1

只需使用您的查询逻辑创建一个内联函数,并让它返回结果。根据需要传入参数。

于 2009-10-19T14:44:51.770 回答
1
select @result = (select count(0) from table1) - (select count(0) from table2)
于 2009-10-19T14:45:17.197 回答
1
SELECT (count(*) from t1) - (count(*) from t2);

这对我有用。

此外,如果只有一张桌子,您还可以这样做:

SELECT (count(column1)) - count(column2)) from table; 
于 2018-03-28T00:43:15.290 回答
1

这可以在单个查询中完成:

SELECT COUNT(col_name) - COUNT(DISTINCT col_name) as Difference from table_name;
于 2020-03-24T09:01:06.710 回答
0

查询如下:

((SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(m,'/',2),'/',-1) 
FROM ms WHERE ms.id=t.m_id)-(SELECT COUNT(id) FROM t AS tr WHERE tr.m_id=t.m_id)) AS remaining
于 2017-10-22T07:40:12.377 回答