我有一个SQL查询,它包含两个一起UNION的SELECT语句。当单独运行时,第一个SELECT返回10个记录,第二个SELECT返回1个记录,所以当我UNION两个SELECT时,我希望得到11条记录,但事实并非如此,我只得到9条记录。
由于SQL的性质,我实际上无法在此发布它,但它包含5个表中的众多JOINS。返回的所有内容都是正确有效的。
只是想知道是否有人看到这个问题发生在UNION的两个SELECT语句时,如果有人对可能的原因有任何建议,甚至指出我正确的方向,谢谢。
答案 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