40

私は次のクエリを持っています

SELECT * FROM table WHERE id IN (5,4,3,1,6)

「idin..」で指定された順序で要素を取得したいので、次を返す必要があります。

5 ....
4 ....
3 ....
1 ....
6 ....

それを行う方法はありますか?

4

4 に答える 4

75

FIELD()を使用します:

SELECT * FROM table WHERE id IN (5,4,3,1,6) ORDER BY FIELD(id, 5,4,3,1,6);
于 2011-02-23T12:07:07.047 に答える
26
SELECT * FROM table WHERE id IN (5,4,3,1,6) ORDER BY FIELD (id, 5,4,3,1,6)
于 2011-02-23T12:06:27.870 に答える
2

誰かがまだ検索している場合は、私はそれを見つけました。

SELECT * FROM `table` WHERE `id` IN (4, 3, 1) ORDER BY FIELD(`id`, 4, 3, 1)

そして、あなたがここで見つけることができる関数のリファレンス

于 2011-02-23T12:10:56.220 に答える
-1

IDごとにIDを作成する必要があります。

id | otherid

1 = 5 2 = 4 3 = 3 4 = 1 6 = 6

IN STATEMENTを使用すると、それらの値がリストにあるかどうかを確認するだけで、特定の順序にはなりません。

于 2011-02-23T12:03:48.707 に答える