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



在SQL Server语句中有

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

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

但是UNION之后的结果集是133,857. 即使它们可能有重叠的线,我不小心错过了,结果至少应该与这两个更大的结果集相同。我想不出133,857这个数字是怎么来的。

我对SQL UNION的理解是否正确?在这种情况下,我使用SQL server

展开问题下的评论,我认为这是你已经知道的:

UNION也会在一个表中处理重复项。

看一个例子:

设置:

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小提琴

相关内容

  • 没有找到相关文章

最新更新