Sql 如何按“输入条件”的顺序从数据库中获取结果;在;条款
对不起,英语不好 bfproduct是一个表,productid是该表中的主键,productname是该表中定义的另一个字段 当我执行此查询时,Sql 如何按“输入条件”的顺序从数据库中获取结果;在;条款,sql,database,sql-server-2005,Sql,Database,Sql Server 2005,对不起,英语不好 bfproduct是一个表,productid是该表中的主键,productname是该表中定义的另一个字段 当我执行此查询时,从bfproduct中选择*,其中productid位于(23,5,543132,32)。结果如下: productid | productname 5 15 Park Avenue 23 Good Boy Bad Boy 32 dsf sf gfdsf dsf d 54 dsdsfsa f
从bfproduct中选择*,其中productid位于(23,5,543132,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
productid |产品名称
公园大道5号15
好孩子坏孩子
32 dsf sf gfdsf dsf d
54 DSFSA ffs ff sfsf
3132正义之书——论法制的失败
是否有任何方法可以通过“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
productid |产品名称
好孩子坏孩子
公园大道5号15
54 DSFSA ffs ff sfsf
3132正义之书——论法制的失败
32 dsf sf gfdsf dsf d
请帮助…您必须添加一个ORDER BY子句,将行按正确顺序排列。以下是一种方法:
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
我能想到的第一件事是,试试
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
(我还没有测试过,所以可能有一些小的语法错误!)你能给我举个例子吗?看这与上面的mark byers答案类似(我投了赞成票,因为我认为它更优雅)。这个解决方案的好处是,你只需要指定一次你想要的顺序和键字段。这也使得解决方案具有可重用性。对于另一种解决方案,您需要在每次创建新报表时同时创建sort和where子句。当然,在这种情况下,UNION ALL远比UNION更适合一次性使用,但在我看来,另一种解决方案更适合构建可重用的解决方案。