mssql指定的ID排在最前面,剩余的按照降序排列。sql语句该怎么写呀?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mssql指定的ID排在最前面,剩余的按照降序排列。sql语句该怎么写呀?相关的知识,希望对你有一定的参考价值。

SELECT *, 1 AS notify FROM A WHERE ID IN (1,2,3…)
UNION
SELECT * FROM
(
    SELECT *, 2 AS notify FROM A ORDER BY ID DESC
EXCEPT
    SELECT *, 2 AS notify FROM A WHERE ID IN (1,2,3…)
)
ORDER BY notify 

试试看这个思路行不

追问

EXCEPT中是不能带 order by的呀。
已经改出来了。谢谢

select *, 1 as num
from A
where cid in (2186,5847,5267,512)

union all

select *, 2 as num
from A
where cid not in (2186,5847,5267,512)

order by num asc,cid desc

追答

额,我写错了,外面可以再包一层

参考技术A select *
from table
where ID= 指定的ID

union all

select *
from table
where ID<> 指定的ID
ORDER BY ID desc

mssql sqlserver 指定特定值排在表前面

原文:mssql sqlserver 指定特定值排在表前面

转自:http://www.maomao365.com/?p=7141

摘要:
下文讲述sql脚本编写中,将 特定值排在最前面的方法分享,
实验环境:sqlserver 2008 R2



例:将数据表中指定值为0的行排在最前面呈现给用户

create table test(keyId int identity,info varchar(10),flag int)
go

insert into test(info,flag)values (a,-100),(b,-2),(C,-3)
,(d,2),(e,4),(f,8),(g,9),(h,0),(e,1),(f,0)
go

---将flag值等于0的放入最前面显示
select * from test order by 
case when flag =0 then 0 else 1 end ,
flag asc 
go

---将flag值等于2的放入最前面显示
select * from test order by 
case when flag =2 then 0 else 1 end ,
flag asc 
go

go
truncate table test
drop table test

技术图片

 




以上是关于mssql指定的ID排在最前面,剩余的按照降序排列。sql语句该怎么写呀?的主要内容,如果未能解决你的问题,请参考以下文章

mssql sqlserver 指定特定值排在表前面

ls 的顺序与倒序排列

oracle使用order by排序null值如何处理

mysql 等 null 空值排序

JavaScript sort函数的使用

mysql排序字段为空的排在最后面