UNION声明显示不一致的结果

时间:2013-03-22 10:26:02

标签: sql oracle

我有一个SQL查询,它包含两个一起UNION的SELECT语句。当单独运行时,第一个SELECT返回10个记录,第二个SELECT返回1个记录,所以当我UNION两个SELECT时,我希望得到11条记录,但事实并非如此,我只得到9条记录。

由于SQL的性质,我实际上无法在此发布它,但它包含5个表中的众多JOINS。返回的所有内容都是正确有效的。

只是想知道是否有人看到这个问题发生在UNION的两个SELECT语句时,如果有人对可能的原因有任何建议,甚至指出我正确的方向,谢谢。

3 个答案:

答案 0 :(得分:3)

UNION默认删除重复项。为防止删除重复项,应使用UNION ALL

引用文档:

  

UNION的默认行为是从结果中删除重复的行。可选的DISTINCT关键字除了默认值之外没有任何影响,因为它还指定了重复行删除。使用可选的ALL关键字,不会发生重复行删除,结果包括所有SELECT语句中的所有匹配行。

答案 1 :(得分:0)

默认情况下,Oracle将一个隐式的distinct子句应用于union的结果。您可能想要检查单独查询的结果是否包含常用项目。

如果您不想要此行为,则需要改为使用UNION ALL子句。

答案 2 :(得分:0)

尝试使用UNION ALL而不是UNION。 UNION仅返回不同的行。 Check this out