网友提供:
Access:
select 字段 From 表 Where id in(1,5,3)
order by instr(',1,5,3,',','&id&',')
MSSQL:
select 字段 From 表 Where id in(1,5,3)
order by charindex(','+rtrim(cast(id as varchar(10)))+',',',1,5,3,')
MySQL:
select 字段 From 表 Where id in (1,5,3)
order by instr(',1,5,3,',',CONCAT(',',id,','))
=====================================================================
网络上搜的文章:
--建立测试环境
Create Table TESTA
(ID Int,
Name Varchar(10))
Create Table TESTB
(Grade Nvarchar(10),
Quantity Int)
Create Table TESTC
(Class Nvarchar(10),
Person Int)
--插入数据
Insert TESTA Values(1,'AA')
Insert TESTA Values(2,'BB')
Insert TESTA Values(1,'CC')
Insert TESTA Values(3,'DD')
Insert TESTA Values(5,'EE')
Insert TESTB Values(N'一年级',89)
Insert TESTB Values(N'三年级',92)
Insert TESTB Values(N'二年级',75)
Insert TESTC Values(N'乙班',3)
Insert TESTC Values(N'甲班',5)
Insert TESTC Values(N'丁班',8)
Insert TESTC Values(N'丙班',6)
--测试
--按2,1,3,5的顺序排序
Select * from TESTA Order By CharIndex(','+Rtrim(ID)+',',',2,1,3,5,')
--按2,5的顺序排序,其余的正常排序
Select * from TESTA Order By CharIndex(','+Rtrim(ID)+',',REVERSE(',2,5,')) Desc,ID
--按一二三的顺序排序
Select * from TESTB Order By CharIndex(Grade,N'一年级二年级三年级')
--按甲乙丙丁的顺序排序
Select * from TESTC Order By CharIndex(Class,N'甲班乙班丙班丁班')
--删除测试环境
Drop Table TESTA,TESTB,TESTC
--结果
/*
--按2,1,3,5的顺序排序
ID Name
2 BB
1 CC
1 AA
3 DD
5 EE
--按2,5的顺序排序,其余的正常排序
ID Name
2 BB
5 EE
1 AA
1 CC
3 DD
--按一二三的顺序排序
Grade Quantity
一年级 89
二年级 75
三年级 92
--按甲乙丙丁的顺序排序
Class Person
甲班 5
乙班 3
丙班 6
丁班 8
*/