我想让数据库查询出来的是以风险值为2,1,3,4这样子的顺序来排序要怎么做?

zyy1111111 2018-05-21 05:26:27
我想让数据库查询出来的是以风险值为2,1,3,4这样子的顺序来排序要怎么做?
...全文
1801 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2018-05-22
  • 打赏
  • 举报
回复
--增加一个排序列,想改排序方式了,把排序表的内容换一下就是了
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
IF OBJECT_ID('orderT') IS NOT NULL DROP TABLE orderT
GO
CREATE TABLE t(id INT IDENTITY(1,1) PRIMARY KEY,n INT)
CREATE TABLE orderT(n INT PRIMARY KEY,orderBy INT)
INSERT INTO t(n) VALUES(2)
INSERT INTO t(n) VALUES(3)
INSERT INTO t(n) VALUES(1)
INSERT INTO t(n) VALUES(4)
INSERT INTO t(n) VALUES(2)

INSERT INTO orderT(n,orderBy) 
SELECT 2,1
UNION ALL SELECT 1,2
UNION ALL SELECT 3,3
UNION ALL SELECT 4,4

SELECT * FROM t INNER JOIN orderT AS ot ON t.n=ot.n
ORDER BY ot.orderBy
/*
id	n	n	orderBy
1	2	2	1
5	2	2	1
3	1	1	2
2	3	3	3
4	4	4	4
*/
simaqingtian 2018-05-22
  • 打赏
  • 举报
回复
引用 1 楼 zyy1111111 的回复:
[quote=引用 楼主 zyy1111111 的回复:] 我想让数据库查询出来的是以风险值为2,1,3,4这样子的顺序来排序要怎么做?
我知道了[/quote] 到底发生了什么
二月十六 2018-05-21
  • 打赏
  • 举报
回复
引用 2 楼 shinger126 的回复:
[quote=引用 1 楼 zyy1111111 的回复:] [quote=引用 楼主 zyy1111111 的回复:] 我想让数据库查询出来的是以风险值为2,1,3,4这样子的顺序来排序要怎么做?
我知道了[/quote] order by case when val=2 then 1 when val=1 then 2 else val end[/quote] 自己动手丰衣足食
RINK_1 2018-05-21
  • 打赏
  • 举报
回复
order by charindex(','+rtrim(风险值)+',','2,1,3,4,')
shinger126 2018-05-21
  • 打赏
  • 举报
回复
引用 1 楼 zyy1111111 的回复:
[quote=引用 楼主 zyy1111111 的回复:] 我想让数据库查询出来的是以风险值为2,1,3,4这样子的顺序来排序要怎么做?
我知道了[/quote] order by case when val=2 then 1 when val=1 then 2 else val end
zyy1111111 2018-05-21
  • 打赏
  • 举报
回复
引用 楼主 zyy1111111 的回复:
我想让数据库查询出来的是以风险值为2,1,3,4这样子的顺序来排序要怎么做?
我知道了

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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