如果您的表格包含以下数据:
USER_ID USERNAME
34267 mark
15669 john
61268 allan
87779 mary
您希望选择这些数据并对它们进行排序,其中具有最低值的用户ID应位于列表顶部。然后,所有其余记录将按用户名的字母顺序排序。所以这个案子约翰应该首先跟随艾伦,然后标记玛丽。
如何在不使用UNION的情况下执行此操作。这只是我所拥有的复杂查询的一部分,每个列都有多个排序。所以,我真的不能使用联盟。它们是应用此逻辑的第5和第6列优先级。
Oracle db版本是12c
答案 0 :(得分:2)
您可以使用order by
:
order by (case when row_number() over (order by user_id) = 1 then 1 else 2 end), -- put minimum user_id on top
name asc
答案 1 :(得分:1)
您可以添加可用于订购记录的第三列:
select USER_ID, USERNAME, case when USER_ID=(select max(USER_ID) from your_table)
then 1 else 2 end as firstOrder
from your_table
order by firstOrder asc, USERNAME asc
所以您将john
作为第一条记录,因为他的firstOrder
为1
,然后您将按USERNAME
订购。