抱歉英文不好。
bfproduct是一个表,productid是此表中的主键,productname是此表中定义的另一个字段。
当我执行此查询时,select * from bfproduct where productid in (23,5,54,3132,32)
。结果如下:
productid | productname 5 15 Park Avenue 23 Good Boy Bad Boy 32 dsf sf gfdsf dsf d 54 dsdsfsa ffs ff sfsf 3132 Just Books - On The Failure of Legal System
我有什么方法可以通过“IN”条款中提供的productid按顺序获得结果集,例如
productid | productname 23 Good Boy Bad Boy 5 15 Park Avenue 54 dsdsfsa ffs ff sfsf 3132 Just Books - On The Failure of Legal System 32 dsf sf gfdsf dsf d
请帮忙......
答案 0 :(得分:9)
这是一种方法:
SELECT *
FROM bfproduct
WHERE productid
IN (23,5,54,3132,32)
ORDER BY
CASE productid
WHEN 23 THEN 0
WHEN 5 THEN 1
WHEN 54 THEN 2
WHEN 3132 THEN 3
WHEN 32 THEN 4
END
答案 1 :(得分:1)
我能想到的第一件事就是尝试......
select bfproduct.*
from bfproduct INNER JOIN
(
select 1 as sequence, 23 as productid
union
select 2,5
union
select 3,54
union
select 4,3132
union
select 5,32
) as lookup on bfproduct.productid=lookup.productid
order by lookup.sequence
(我没有对此进行测试,因此可能会出现一些小的语法错误!)
答案 2 :(得分:0)
您必须添加一个ORDER BY子句,将行放入正确的顺序。