有没有办法写一个以特定记录开头的选择记录?假设我有一个包含以下数据的表:
SNO ID ISSUE
----------------------
1 A1 unknown
2 A2 some_issue
3 A1 unknown2
4 B1 some_issue2
5 B3 ISSUE4
6 B1 ISSUE4
Run Code Online (Sandbox Code Playgroud)
我可以编写一个选择来开始显示以B1开头的记录,然后是剩余的记录吗?输出应该是这样的:
4 B1 some_issue2
6 B1 ISSUE4
1 A1 unknown
2 A2 some_issue
3 A1 unknown2
5 B3 ISSUE4
Run Code Online (Sandbox Code Playgroud)
如果B3是最后一个并不重要,只要首先显示B1.
几个不同的选项取决于你提前知道的东西(即你想要的记录的id,sno等):
联盟方式:
select 1 as sortOrder, SNO, ID, ISSUE
from tableName
where ID = 'B1'
union all
select 2 as sortOrder, SNO, ID, ISSUE
from tableName
where ID <> 'B1'
order by sortOrder;
Run Code Online (Sandbox Code Playgroud)
案例陈述按顺序排列:
select SNO, ID, ISSUE
from tableName
order by case when ID = 'B1' then 1 else 2 end;
Run Code Online (Sandbox Code Playgroud)
您也可以考虑使用临时表,cte等,但这些方法可能性能较差...在您的环境中尝试几种不同的方法,看看哪种方法效果最好.