Sybase Select WHERE IN 给定顺序

Sybase Select WHERE IN given order

在 Sybase

中使用 SELECT WHERE IN() 时有没有办法保持顺序

mysql中有两个例子:

SELECT * FROM table WHERE id IN (118,17,113,23,72) 
ORDER BY FIELD(id,118,17,113,23,72)


SELECT * FROM table WHERE id IN (118,17,113,23,72) 
ORDER BY FIND_IN_SET(id, '118,17,113,23,72')

我在 Sybase Ase 中需要它。

您可以使用 case 语句分解参数列表,显式地为参数分配升序计数器并根据该顺序进行排序:

SELECT   * 
FROM     sometable 
WHERE    id IN (118,17,113,23,72) 
ORDER BY CASE id WHEN 118 THEN 1
                 WHEN 17  THEN 2
                 WHEN 113 THEN 3
                 WHEN 23  THEN 4
                 WHEN 72  THEN 5
          END ASC

它太笨重了,但应该可以用。