这是一篇来自"猫猫小屋"的按特定值的排序位置的文章
下文讲述sql脚本编写中,将 特定值排在最前面的方法分享,
实验环境:sqlserver 2008 R2

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

   create table test(keyId int identity,info varchar(100),flag int)
insert into test(info,flag)values ('a',-100),('maomao365',-2),(N'sql博客',-3)
,('d',2),('e',4),('f',8),('g',9),('h',0),('e',1),('f',0)
---将flag值等于0的放入最前面显示
select * from test  order by 
     case when flag =0 then 0 else 1 end ,
 flag asc  
---将flag值等于2的放入最前面显示
select * from test  order by 
     case when flag =2 then 0 else 1 end ,
 flag asc  
truncate table test
drop     table test
SQL 中将 特定 的数据排在第一行使用order by 排序在排序时将 特定 的无规则的数据排在第一行 使用order by 排序 在 SQL 里会使用order by来对数据进行排序,例如: select pid, name from t_province where 1 = 1 order by name 在排序时将 特定 的无规则的数据排在第一行 但有时候会想把某一条 特定 的无规则数据排放到第一... Sql 排序时,怎么将 指定 的值放在最前或者最后呢? 假设我们有张字段为id,name,age三个字段的 。需要将name=‘b’的记录按照id排序时放在查询结果的最后展示。 可以这样写: SELECT * FROM `test` ORDER BY name ='b',id desc 放在最前展示可以这样写: SELECT * FROM `test` ORDER BY name !='b',id desc 如果多个字段排序的话,name = 'xxx' 的顺序不同,结果也是不同的, sql 将按. 查询出数据,按序号排序,并将一个或是多个 特定 的数据排在最 前面 sql 格式: select * from `edr_artical` where (`t_id` = 26 or `id` = 63) and `is_pub` = 1 and `edr_artical`.`deleted_at` is null order by case when (id=63 or id=64) then 0 el... 什么是排序规则呢? 排序规则根据 特定 语言和区域设置标准 指定 对字符串数据进行排序和比较的规则。 SQL Server 支持在单个数据库中存储具有不同排序规则的对象。MSDN解释:在 Microsoft SQL Server  中,字符串的物理存储由排序规则控制。排序规则 指定 示每个字符的位模式以及存储和比较字符所使用的规则 当 Transact- SQL 语句在具有不同排序规则设置的不同数据库上下 p.rows AS RowCounts, SUM(a.total_pages) * 8 AS TotalSpaceKB, CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS 总共占用空间, SUM(a.used_pages) * 8 AS UsedSpaceKB, 在有些情况下我们需要按 指定 顺序输出数据,比如选择了ID in(3,1,2,5,4)我们希望按这个3,1,2,5,4的顺序输出,这样只使用order by ID是无法实现的, 但是我们可以使用order by charindex(','+convert(varchar,ID)+',',',3,1,2,5,4,')的方法来实现这个目的。举例如下: Create Table info(