如何区分两个不同表中的行数?
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
作为结果。这两张表可能不一定具有相同的情感。
答案 0 :(得分:5)
减运算符用于删除第二个结果集中包含的所有第一个结果集的记录。在这里使用 - (破折号)运算符。
select ((select count(*) from dual44) - (select count(*) from dual)) from dual
答案 1 :(得分:0)
select count(*) - (select count(*) from dual)
from dual44
MINUS是一个SQL集合操作,这里不需要,只需使用-
。
答案 2 :(得分:0)
SELECT (a.count-b.count)
FROM
(SELECT COUNT(*) count FROM dual44) a,
(SELECT COUNT(*) count FROM dual) b;
答案 3 :(得分:0)
以下内容非常快(对于数百万条记录的表,不到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
示例代码适用于ORACLE的HR模式。您可以更改表名。
这两个表可能不一定具有相同的架构。
编辑Jeffrey Kemp的评论:
如果表位于不同的模式上,则必须使用dba_tables
,如果您拥有权限。
只需将架构名称添加到表名称即可。即HR.JOBS
答案 4 :(得分:-1)
在 Sqlite 中,这样可行:
Select (Select count(col1) from Table1) - (Select count(col2) from Table2))