2

(MS ACCESS) のようなクエリがあります。number values in the IN caluse is a variant与えられた例では、30 を超える数字が 4 つしかありませんでした。

SELECT        ID
FROM          TableName
WHERE        (ID IN (16, 18, 15, 20 ))

Result : 15 ,16,18,20 

calusesame orderで指定された値の値を取得する方法はありますか。 結果はこのようになります IN
Result : 16,18,15,20

4

2 に答える 2

3

あなたはこれを行うことができます:

SELECT DISTINCT t1.ID
FROM          TableName t1
INNER JOIN
(
    SELECT 1 sortorder, 16 ID
    UNION ALL
    SELECT 2, 18
    UNION ALL
    SELECT 3, 15
    UNION ALL
    SELECT 4, 20
) t2 ON t1.ID = t2.ID
ORDER BY t2.sortorder
于 2012-11-07T15:28:16.637 に答える
1

IN()リスト内の値の順序を調べて、同じ順序を に適用するように db エンジンに指示する方法はありませんORDER BY

式を使用して同じ順序を適用することもできますSwitch()が、その場合は維持Switch()してIn()同期する必要があります。

SELECT id
FROM YourTable
WHERE id In (16,18,15,20)
ORDER BY 
    Switch(
        id=16,1,
        id=18,2,
        id=15,3,
        id=20,4
    );
于 2012-11-07T15:46:38.813 に答える