SQL在顶部有一个特定记录,下面是所有其他记录

Ari*_*iod 7 sql oracle

我正在尝试将一个查询放在一起,该查询将在顶部显示一条特定记录(由记录的主ID找到),并显示其下方的所有其他记录,按日期排序(我将"date_added"作为其中一个字段表,除了主要ID).

我可以使用UNION(第一个选择将找到我想要的记录,另一个选择将显示所有其他记录),但我想知道是否有更好的方法?

顺便说一下,我正在使用Oracle.

Ada*_*dam 19

您可以通过两个字段排序来完成此操作

第一个是一个表达式,如果行是你想要的那个,则返回0,如果不是,则返回1.排序将升序,因此您首先获得首选记录.

第二个排序字段是date_added,因此剩余的记录按此顺序排序.

害怕我不知道oracle在sql server中会是这样的

select * 
from the_table 
order by (case id when 999 then 0 else 1 end), date_added desc 
Run Code Online (Sandbox Code Playgroud)


And*_*mar 7

一种更简单的方法是构造的花哨的顺序.这是pk = 123的示例:

select *
from YourTable
order by case when yourpk = 123 then 1 else 2 end, date_added
Run Code Online (Sandbox Code Playgroud)