SQL 指定排序 ,, ########### 100% 结贴

t101lian 2013-11-20 05:08:31
-10	5102311966100127	于君	35
-15 5102311955012430 蒋远 30
-9 5102301974040890 胡正 50
0 5102311971082924 李先 40
0 5102311948061725 张德 30
-100 5102311960070425 刘昌 50
-40 5102311948111625 赖正 36
-50 5102311970120325 雷洪 50
-58 5102311973081024 艾维 40
-3 5102311955021124 蒋道 38


一个表只有这么四列没有ID,上面的数据是直接从数据库中复制出来的 ,第三列为name , 如果我想把name为“赖正”的排到第一,其他的顺序不变。 这个怎么排序? 用case when 或 CHARINDEX 怎么查?
...全文
66 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2013-11-20
  • 打赏
  • 举报
回复
引用 4 楼 t101lian 的回复:
select * from Auction order by case when aid=1127 then 0 else ROW_NUMBER()OVER(ORDER BY @@servername) end
呵呵,写的很不错
t101lian 2013-11-20
  • 打赏
  • 举报
回复
select * from Auction order by case when aid=1127 then 0 else ROW_NUMBER()OVER(ORDER BY @@servername) end
t101lian 2013-11-20
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-11-20 17:09:04
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--	Dec 28 2012 20:23:12 
--	Copyright (c) Microsoft Corporation
--	Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([a] int,[b] bigint,[name] varchar(4),[c] int)
insert [huang]
select -10,5102311966100127,'于君',35 union all
select -15,5102311955012430,'蒋远',30 union all
select -9,5102301974040890,'胡正',50 union all
select 0,5102311971082924,'李先',40 union all
select 0,5102311948061725,'张德',30 union all
select -100,5102311960070425,'刘昌',50 union all
select -40,5102311948111625,'赖正',36 union all
select -50,5102311970120325,'雷洪',50 union all
select -58,5102311973081024,'艾维',40 union ALL
select -3,5102311955021124,'蒋道',38
--------------开始查询--------------------------
SELECT a,b,name,c
FROM (
select * ,ROW_NUMBER()OVER(ORDER BY GETDATE())id
from [huang])a
ORDER BY CASE WHEN name='赖正' THEN 0 ELSE id END 

----------------结果----------------------------
/* 
a           b                    name c
----------- -------------------- ---- -----------
-40         5102311948111625     赖正   36
-10         5102311966100127     于君   35
-15         5102311955012430     蒋远   30
-9          5102301974040890     胡正   50
0           5102311971082924     李先   40
0           5102311948061725     张德   30
-100        5102311960070425     刘昌   50
-50         5102311970120325     雷洪   50
-58         5102311973081024     艾维   40
-3          5102311955021124     蒋道   38

*/
引用 2 楼 yupeigu 的回复:

if object_id('tb') is not null drop table tb
go 

create table tb([a] int,[b] bigint,[name] varchar(4),[c] int)
insert tb
select -10,5102311966100127,'于君',35 union all
select -15,5102311955012430,'蒋远',30 union all
select -9,5102301974040890,'胡正',50 union all
select 0,5102311971082924,'李先',40 union all
select 0,5102311948061725,'张德',30 union all
select -100,5102311960070425,'刘昌',50 union all
select -40,5102311948111625,'赖正',36 union all
select -50,5102311970120325,'雷洪',50 union all
select -58,5102311973081024,'艾维',40 union ALL
select -3,5102311955021124,'蒋道',38


SELECT a,b,name,c
FROM 
(
select * ,case when name='赖正' 
                    then 0
               else ROW_NUMBER()OVER(ORDER BY @@servername)
          end id
from tb
)a
ORDER BY id
/*
a	b	name	c
-40	5102311948111625	赖正	36
-10	5102311966100127	于君	35
-15	5102311955012430	蒋远	30
-9	5102301974040890	胡正	50
0	5102311971082924	李先	40
0	5102311948061725	张德	30
-100	5102311960070425	刘昌	50
-50	5102311970120325	雷洪	50
-58	5102311973081024	艾维	40
-3	5102311955021124	蒋道	38
*/
明白啦, 谢谢两位大牛
LongRui888 2013-11-20
  • 打赏
  • 举报
回复

if object_id('tb') is not null drop table tb
go 

create table tb([a] int,[b] bigint,[name] varchar(4),[c] int)
insert tb
select -10,5102311966100127,'于君',35 union all
select -15,5102311955012430,'蒋远',30 union all
select -9,5102301974040890,'胡正',50 union all
select 0,5102311971082924,'李先',40 union all
select 0,5102311948061725,'张德',30 union all
select -100,5102311960070425,'刘昌',50 union all
select -40,5102311948111625,'赖正',36 union all
select -50,5102311970120325,'雷洪',50 union all
select -58,5102311973081024,'艾维',40 union ALL
select -3,5102311955021124,'蒋道',38


SELECT a,b,name,c
FROM 
(
select * ,case when name='赖正' 
                    then 0
               else ROW_NUMBER()OVER(ORDER BY @@servername)
          end id
from tb
)a
ORDER BY id
/*
a	b	name	c
-40	5102311948111625	赖正	36
-10	5102311966100127	于君	35
-15	5102311955012430	蒋远	30
-9	5102301974040890	胡正	50
0	5102311971082924	李先	40
0	5102311948061725	张德	30
-100	5102311960070425	刘昌	50
-50	5102311970120325	雷洪	50
-58	5102311973081024	艾维	40
-3	5102311955021124	蒋道	38
*/
發糞塗牆 2013-11-20
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-11-20 17:09:04
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--	Dec 28 2012 20:23:12 
--	Copyright (c) Microsoft Corporation
--	Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([a] int,[b] bigint,[name] varchar(4),[c] int)
insert [huang]
select -10,5102311966100127,'于君',35 union all
select -15,5102311955012430,'蒋远',30 union all
select -9,5102301974040890,'胡正',50 union all
select 0,5102311971082924,'李先',40 union all
select 0,5102311948061725,'张德',30 union all
select -100,5102311960070425,'刘昌',50 union all
select -40,5102311948111625,'赖正',36 union all
select -50,5102311970120325,'雷洪',50 union all
select -58,5102311973081024,'艾维',40 union ALL
select -3,5102311955021124,'蒋道',38
--------------开始查询--------------------------
SELECT a,b,name,c
FROM (
select * ,ROW_NUMBER()OVER(ORDER BY GETDATE())id
from [huang])a
ORDER BY CASE WHEN name='赖正' THEN 0 ELSE id END 

----------------结果----------------------------
/* 
a           b                    name c
----------- -------------------- ---- -----------
-40         5102311948111625     赖正   36
-10         5102311966100127     于君   35
-15         5102311955012430     蒋远   30
-9          5102301974040890     胡正   50
0           5102311971082924     李先   40
0           5102311948061725     张德   30
-100        5102311960070425     刘昌   50
-50         5102311970120325     雷洪   50
-58         5102311973081024     艾维   40
-3          5102311955021124     蒋道   38

*/

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧