如何自定义排序 sql 个表格
How to custom sort sql tables
Name Code days
-----------------
aaaa A 2
bbbb B -2
cccc Q -1
dddd C 1
eeee D -3
ffff A 3
我想在 SQL 服务器中手动对 table 进行排序。当代码是 A 或 Q 时,它应该始终在最前面。否则它应该按升序按天排序。
应该是这样的
Name Code days
-----------------
aaaa A 2
ffff A 3
cccc Q -1
eeee D -3
bbbb B -2
dddd C 1
您可以使用 case
进行条件排序:
select *
from your_table
order by
case when code in ('A','Q') then 0 else 1 end, -- Keep A, Q at top
case when code is ('A','Q') then code end, -- order A, Q alphabetically
days; -- order by days
表格代表无序集。您不能(出于实际目的)对它们进行排序。
但是,您可以对查询的结果集进行排序。查询 table 时,您会这样做:
select t.*
from t
order by (case when code in ('A', 'Q') then 1 else 2 end), days;
select name , code , days
from t
order by
case when code in ('A','Q')
then 0 else 10 + days
end asc;
Name Code days
-----------------
aaaa A 2
bbbb B -2
cccc Q -1
dddd C 1
eeee D -3
ffff A 3
我想在 SQL 服务器中手动对 table 进行排序。当代码是 A 或 Q 时,它应该始终在最前面。否则它应该按升序按天排序。
应该是这样的
Name Code days
-----------------
aaaa A 2
ffff A 3
cccc Q -1
eeee D -3
bbbb B -2
dddd C 1
您可以使用 case
进行条件排序:
select *
from your_table
order by
case when code in ('A','Q') then 0 else 1 end, -- Keep A, Q at top
case when code is ('A','Q') then code end, -- order A, Q alphabetically
days; -- order by days
表格代表无序集。您不能(出于实际目的)对它们进行排序。
但是,您可以对查询的结果集进行排序。查询 table 时,您会这样做:
select t.*
from t
order by (case when code in ('A', 'Q') then 1 else 2 end), days;
select name , code , days
from t
order by
case when code in ('A','Q')
then 0 else 10 + days
end asc;