这是一篇来自"猫猫小屋"的按特定值的排序位置的文章
下文讲述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(