在Oracle中显示订单中的记录列表

时间:2011-08-12 11:26:50

标签: oracle10g

  

可能重复:
  SQL - order by list order

我通过使用IN查询传递一个acct数列表来编写SQL查询,如: -

select acctnum,acctname from account where acctnum IN ('100', '200', '300')

这是我在查询中传递acctnumbers的方式。但是Oracle按以下顺序返回数据。

acctnum acctname 200鲍勃 100亚伦 300钱德勒

但是我希望数据以我通过acctnum的顺序显示(即)首先显示acct num“100”的记录,然后是其他记录。 因此,我希望结果如下: -

acctnum acctname 100亚伦 200鲍勃 300钱德勒

我们可以使用任何Oracle函数按照传递顺序显示记录吗?请让我知道你的意见。

感谢。

1 个答案:

答案 0 :(得分:0)

AFAIK,没有办法这样做,因为检索方法取决于优化器和表中行的顺序以及其他因素。

要实现您想要在此处执行的操作,您需要明确地对输出进行排序,例如。

SELECT acctnum,
       acctname 
  FROM account 
 WHERE acctnum IN ('100', '200', '300')
 ORDER BY (CASE acctnum
              WHEN '100' THEN 1
              WHEN '200' THEN 2
              WHEN '300' THEN 3
            END)

希望这有帮助, 奥利