SQL * Plus: разница в количестве строк в двух таблицах - PullRequest
1 голос
/ 17 января 2011

Как мне определить разницу в количестве строк в двух разных таблицах?

SQL> select count(*) from dual44;

  COUNT(*)
----------
         3

SQL> select count(*) from dual;

  COUNT(*)
----------
         1

SQL> (select count(*) from dual44)
  2  minus
  3  (select count(*) from dual)
  4  ;

  COUNT(*)
----------
         3

SQL> 

Мне нужно 2 в качестве результата.Две таблицы могут не обязательно иметь одинаковую схему.

Ответы [ 5 ]

5 голосов
/ 17 января 2011

Оператор минус используется для удаления всех записей первого набора результатов, которые также содержатся во втором. Используйте оператор - (тире) здесь.

select ((select count(*) from dual44) - (select count(*) from dual)) from dual
0 голосов
/ 23 июня 2014

В Sqlite , это будет работать:

Select (Select count(col1) from Table1) - (Select count(col2) from Table2)) 
0 голосов
/ 26 января 2012

Следующее действительно быстро (менее 1 секунды для таблиц с сотнями миллионов записей) при условии, что ваша статистика актуальна (что настоятельно рекомендуется).

select 
(
(select u.NUM_ROWS from user_tables u where u.TABLE_NAME='JOBS')
 - 
(select u.NUM_ROWS from user_tables u where u.TABLE_NAME='COUNTRIES')
 ) DIFF
from dual


     DIFF
----------
        -6

Пример кода применяется к схеме HR ORACLE.Вы можете изменить имена таблиц.

Обе таблицы могут не обязательно иметь одну и ту же схему.

Редактировать комментарий Джеффри Кемпа:

Если таблицы в разных схемах, вы должны использовать dba_tables, если у вас есть права доступа.

Просто добавьте имя схемы к имени таблицы.то есть HR.JOBS

0 голосов
/ 26 января 2012
SELECT (a.count-b.count)
 FROM
   (SELECT COUNT(*) count FROM dual44) a,
   (SELECT COUNT(*) count FROM dual) b;
0 голосов
/ 17 января 2011
select count(*) - (select count(*) from dual)
from dual44

MINUS - это операция набора SQL, которая здесь не нужна, просто используйте -.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...