【问题标题】:Adding a column to a union select statement results with more result rows将一列添加到具有更多结果行的联合选择语句结果
【发布时间】:2019-12-18 09:40:39
【问题描述】:

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

【问题讨论】:

  • 请不要发布代码截图。在代码块中使用纯文本。阅读:How do I format my code blocks?
  • 好的,对不起,我做到了。我认为这是在同一张照片中显示查询和结果的好方法。

标签: mysql sql stored-procedures mysql-workbench


【解决方案1】:

这并不奇怪。

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,您将在两种情况下获得相同数量的行。在第一种情况下,您会在结果集中看到重复的行。

这回答了您提出的问题。如果您想要一个特定的结果集,问一个新的 问题是样本数据、期望的结果和您的查询作为问题中的文本

【讨论】:

  • 感谢 Gordon,这个解释很有帮助。 Garvit 的解决方案也在起作用,因此我不再需要任何列。
  • @djoleasterix 。 . .您应该注意,我在此答案中提到了union all,该答案早于该答案发布。
  • 好的,抱歉。没看到
【解决方案2】:

请使用 Union All 而不是 Union。当您在这里使用 Union 时,它将从您的输出中消除重复的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多