小编Dec*_*ard的帖子

Oracle联合默认排序很奇怪

如您所知,union删除重复的行。我认为它从后者中删除,但事实并非如此。

我发现如果没有order by子句,Oracle 会按第一列对合并的数据集进行排序并删除重复项。

select 4,5,6 from dual
union 
select 1,2,3 from dual
union 
select 4,5,6 from dual
Run Code Online (Sandbox Code Playgroud)

结果:

1   2   3
4   5   6
Run Code Online (Sandbox Code Playgroud)

而我期望:

4   5   6
1   2   3
Run Code Online (Sandbox Code Playgroud)

我在这方面失败了很多次,并使问题变得简单,就像上面的例子一样。

如何在没有 的情况下保持联合序列order by

在我的真实案例中,第一个select是完全匹配(=)结果,第二个是部分匹配(like)结果。

例如,如果我搜索罗马人

全场比赛结果:罗马,部分比赛结果:香气

当然,完整的比赛结果应该是第一位的。正如我所说,它似乎order byunion结果的第一列。

但是,如您所见:

select 'roma' from dual -- result comes out anyway..
union select 'aroma' from dual; …
Run Code Online (Sandbox Code Playgroud)

oracle order-by union

0
推荐指数
2
解决办法
5672
查看次数

标签 统计

oracle ×1

order-by ×1

union ×1