Ответ 1
Вы можете использовать подзапросы для этого:
SELECT
(SELECT COUNT(*) FROM ... WHERE ...)
- (SELECT COUNT(*) FROM ... WHERE ...) AS Difference
Просто протестировал его:
Difference
-----------
45
(1 row(s) affected)
У меня есть 2 запроса в MS SQL, которые возвращают ряд результатов, используя функцию COUNT.
Я могу запустить первый запрос и получить первый результат, а затем запустить другой, чтобы получить другой результат, вычесть их и найти результаты; однако есть способ объединить все 3 функции и получить 1 общий результат
Как в: запустите sql1 запустите sql2 запустите SQL3 (sql1-sql2)?....
Я попробовал их с xxxx как функцией, но не повезло.
Вы можете использовать подзапросы для этого:
SELECT
(SELECT COUNT(*) FROM ... WHERE ...)
- (SELECT COUNT(*) FROM ... WHERE ...) AS Difference
Просто протестировал его:
Difference
-----------
45
(1 row(s) affected)
SELECT (SELECT COUNT(*) FROM t1) - (SELECT COUNT(*) FROM t2)
Я знаю, что это старый пост, но вот еще одно решение, которое наилучшим образом отвечает моим потребностям (проверено на firebird)
SELECT c1-c2 from (select count(*) c1 from t1), (SELECT COUNT(*) c2 from t2);
Запрос как ниже:
SELECT (select COUNT(FIRSTNAME) FROM TRMDW.EMPLOYEE1) - (SELECT COUNT(DISTINCT FIRSTNAME) FROM TRMDW.EMPLOYEE1) as difference from dual;
Просто создайте встроенную функцию с логикой запроса и верните результат. При необходимости передайте параметры.
select @result = (select count(0) from table1) - (select count(0) from table2)
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
SELECT (count(*) from t1) - (count(*) from t2);
это сработало для меня.
Также, если есть только одна таблица, вы также можете сделать:
SELECT (count(column1)) - count(column2)) from table;
Запрос как ниже:
((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