sql选择以特定记录开头

JPr*_*Pro 0 mysql sql

有没有办法写一个以特定记录开头的选择记录?假设我有一个包含以下数据的表:

 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.

boy*_*dc7 7

几个不同的选项取决于你提前知道的东西(即你想要的记录的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等,但这些方法可能性能较差...在您的环境中尝试几种不同的方法,看看哪种方法效果最好.