UNION 两个 SELECT 查询,但结果集小于其中一个

UNION two SELECT queries but result set is smaller than one of them

在 SQL 服务器语句中有

SELECT id, book, acnt, prod, category from Table1 <where clause...>
UNION
SELECT id, book, acnt, prod, category from Table2 <where clause...>

第一个查询返回了131,972行数据;第二个,147,692 行。我没有注意到这两个表有任何共享的数据行,所以我希望 UNION 之后的结果集应该与 131972 + 147692 = 279,384 的总和相同。

然而UNION后的结果集是133,857。尽管它们可能有我不小心错过的重叠线,但结果应该至少与这两者的较大结果集相同。想不通133857这个数字是怎么来的

我对 SQL UNION 的理解正确吗?在这种情况下,我使用 SQL 服务器。

扩展问题下给出的评论,我认为这说明了您已经知道的内容:

UNION 也处理一个 table 中的重复项。

看个例子:

设置:

create table tbl1 (col1 int, col2 int);
insert into tbl1 values
(1,2),
(3,4);
create table tbl2 (col1 int, col2 int);
insert into tbl1 values
(1,2),
(1,2),
(1,2),
(3,4);

查询

select * from tbl1
union 
select * from tbl2;

将产生输出

col1 | col2
-----|------
1    | 2
3    | 4

DB fiddle