2

テーブルから選択するときに orderby に問題がある I have table

ID        value
1         2201
2         5412
3         3300
4         6600
5         7700
6         2200
-------------------
My sql query:
SELECT * FROM table WHERE id in ('2','4','6','1','3')

結果は次のとおりです。

ID        value
6         2200
1         2201
3         3300
2         5412
4         6600

並べ替える必要はありません。文字列内の位置を表示したいだけです

ID        value
2         5412
4         6600
6         2200
1         2201
3         3300

前もって感謝します!

4

4 に答える 4

0

1 つの方法:

SELECT * FROM table 
WHERE id IN (2,4,6,1,3)
ORDER BY ID = 2 DESC, ID = 4 DESC, ID = 6 DESC, ID = 1 DESC, ID = 3 DESC;
于 2013-04-11T15:58:19.620 に答える
0

返されるタプルの順序を保証しない SQL でこれを行う方法はありません。アプリケーションでその順序に従って並べ替えるか、次のように別の列を作成する必要があります。

1 2 5412
2 4 6600
3 6 2200

etc...

新しい列で並べ替えます。それ以外の場合、アプリケーションのコードは、SQL の呼び出しに使用する言語によって異なります。

よろしく、

ジェイソン・ポジット

于 2013-04-11T15:59:44.797 に答える
0

これを試して

   SELECT * FROM table1 WHERE id in ('2','4','6','1','3')
   order by FIELD(id, '2', '4', '6', '1', '3')

デモはこちら

于 2013-04-11T16:01:10.053 に答える