SQL。按我的订单获取ID

时间:2015-04-07 08:27:39

标签: sql oracle oracle10g sql-order-by

我的sql查询按顺序给出了ID:

3,5,7,1,9,2

我可以用什么来获取我的ID:1,3,2按此顺序? (3,1,2)。如果我使用

WHERE ID IN(1,3,2)

它给了我以下内容:(1,2,3)

1 个答案:

答案 0 :(得分:0)

  

我可以用什么来获取我的ID:1,3,2按此顺序? (3,1,2)。

您可以在 ORDER BY子句中使用 CASE表达式来自定义输出的排序。

例如,

SQL> WITH DATA AS(
  2  SELECT 3 ID FROM dual UNION ALL
  3  SELECT 5 ID FROM dual UNION ALL
  4  SELECT 7 ID FROM dual UNION ALL
  5  SELECT 1 ID FROM dual UNION ALL
  6  SELECT 9 ID FROM dual UNION ALL
  7  SELECT 2 ID FROM dual
  8  )
  9   SELECT id
 10  FROM   data
 11  WHERE  id IN( 1, 3, 2 )
 12  ORDER  BY CASE ID
 13              WHEN 3 THEN 1
 14              WHEN 1 THEN 2
 15              WHEN 2 THEN 3
 16            END
 17  /

        ID
----------
         3
         1
         2

SQL>