Sql 显示不一致结果的工会声明
我有一个SQL查询,它由两个并集在一起的SELECT语句组成。单独运行时,第一个选择返回10条记录,第二个选择返回1条记录,因此当我合并两个选择时,我希望返回11条记录,但事实并非如此,我只得到9条记录 由于SQL的性质,我不能在这里发布它,但它包含了跨越5个表的大量连接。返回的所有内容都是正确和有效的Sql 显示不一致结果的工会声明,sql,oracle,Sql,Oracle,我有一个SQL查询,它由两个并集在一起的SELECT语句组成。单独运行时,第一个选择返回10条记录,第二个选择返回1条记录,因此当我合并两个选择时,我希望返回11条记录,但事实并非如此,我只得到9条记录 由于SQL的性质,我不能在这里发布它,但它包含了跨越5个表的大量连接。返回的所有内容都是正确和有效的 我只是想知道是否有人在合并两个SELECT语句时看到过这个问题,是否有人对可能的原因有任何建议,甚至为我指出了正确的方向,谢谢。默认情况下,Oracle会对合并的结果应用隐式distinct子句
我只是想知道是否有人在合并两个SELECT语句时看到过这个问题,是否有人对可能的原因有任何建议,甚至为我指出了正确的方向,谢谢。默认情况下,Oracle会对合并的结果应用隐式distinct子句。您可能需要检查单独查询的结果是否包含公共项
如果不希望出现这种行为,则需要改用UNION ALL子句。默认情况下,Oracle会对UNION的结果应用隐式distinct子句。您可能需要检查单独查询的结果是否包含公共项
如果不希望出现这种行为,则需要使用UNION ALL子句。尝试使用
UNION ALL
而不是仅使用UNION
。UNION只返回不同的行 尝试使用UNION ALL
而不是仅使用UNION
。UNION只返回不同的行 默认情况下删除重复项。为防止重复项被删除,应使用
引用文件:
UNION的默认行为是从结果中删除重复的行。可选的DISTINCT关键字除了默认关键字外没有其他效果,因为它还指定删除重复行。使用可选的ALL关键字,不会删除重复的行,结果包括所有SELECT语句中的所有匹配行
默认情况下删除重复项。为防止重复项被删除,应使用
引用文件:
UNION的默认行为是从结果中删除重复的行。可选的DISTINCT关键字除了默认关键字外没有其他效果,因为它还指定删除重复行。使用可选的ALL关键字,不会删除重复的行,结果包括所有SELECT语句中的所有匹配行
您不应该期望正好有11条记录。UNION将把重复项“合并”到一行中,所以您最多需要11条记录。如果你得到9,这可能意味着它们在前10条记录中是重复的。。。你能和大家一起试试吗?和/或在第一个查询中尝试使用DISTINCT,以查看您得到的行数。如果您不发布代码,我们将无法帮助您<代码>联合不应以这种方式运行,因此代码对于确定问题至关重要。我建议创建一个代码来显示问题——它不一定是您的确切代码——只是显示相同行为的东西。@RaphaëlAlthaus谢谢您的帮助,现在工作得很好,但不知道ALL选项。:)您不应该期望正好有11条记录。UNION将把重复项“合并”到一行中,所以您最多需要11条记录。如果你得到9,这可能意味着它们在前10条记录中是重复的。。。你能和大家一起试试吗?和/或在第一个查询中尝试使用DISTINCT,以查看您得到的行数。如果您不发布代码,我们将无法帮助您<代码>联合不应以这种方式运行,因此代码对于确定问题至关重要。我建议创建一个代码来显示问题——它不一定是您的确切代码——只是显示相同行为的东西。@RaphaëlAlthaus谢谢您的帮助,现在工作得很好,但不知道ALL选项。:)