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
在 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