Oracle sql - 在顶部选择记录的排序记录

时间:2017-10-17 12:05:47

标签: sql oracle

如果您的表格包含以下数据:

USER_ID          USERNAME
  34267             mark
  15669             john
  61268             allan
  87779             mary

您希望选择这些数据并对它们进行排序,其中具有最低值的用户ID应位于列表顶部。然后,所有其余记录将按用户名的字母顺序排序。所以这个案子约翰应该首先跟随艾伦,然后标记玛丽。

如何在不使用UNION的情况下执行此操作。这只是我所拥有的复杂查询的一部分,每个列都有多个排序。所以,我真的不能使用联盟。它们是应用此逻辑的第5和第6列优先级。

Oracle db版本是12c

2 个答案:

答案 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作为第一条记录,因为他的firstOrder1,然后您将按USERNAME订购。