如何通过命令放入“IN”子句中的条件从数据库中获取结果?

时间:2010-07-12 11:24:28

标签: sql database sql-server-2005

抱歉英文不好。

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  

请帮忙......

3 个答案:

答案 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子句,将行放入正确的顺序。