在并集选择语句中添加列会导致更多结果行

时间:2019-08-11 13:50:06

标签: mysql sql stored-procedures mysql-workbench

我为库存管理系统建立了一个数据库。 对于某些报告,我需要合并来自两个不同表的两个查询, 编写选择语句后,我注意到结果缺少一行。 再增加一列后,就会出现缺少的行。 我正在提供查询和结果的打印屏幕。

initial query after adding one more column in queries

2 个答案:

答案 0 :(得分:0)

这不足为奇。

UNION删除重复的行。因此,当您添加新列时,您将获得相同的不同行。例如:

表1

x    y
1    'a'
1    'b'

表2

x    y
1    'c'
2    'd'

以下查询:

select x from table1 
union
select x from table2

返回:

1
2

但是,包括y

select x, y from table1 
union
select x, y from table2

您将获得四行:

x    y
1    'a'
1    'b'
1    'c'
2    'd'

如果使用union all,则两种情况下的行数均相同。在第一种情况下,您将在结果集中看到重复的行。

这回答了您提出的问题。如果您要特定的结果集,请问一个 new 问题,该问题是示例数据,所需结果以及您的查询中的文本

答案 1 :(得分:0)

请使用“全部联合”而不是“联合”。当您在此处使用Union时,它将消除输出中的重复行。