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