3

これは、Ayman Houriehの回答を参照しています。

質問へ: MySQL - IN() 内の ORDER BY 値

SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')

FIELD 関数は、残りの文字列リスト内の最初の文字列の位置を返します。

したがって、..ORDER BY 4または関数が位置を返すようになります。この状況でどのように機能するかを説明してください。ORDER BY 1FIELDORDER BY

4

1 に答える 1

2

行ごとFIELD()に、整数値を返します。次に、行はこの値で並べ替えられます。

select 部分に句を追加するFIELD()と、それがどのように機能するかを理解するのに役立ちます。

SELECT id, name, FIELD(name, 'B', 'A', 'D', 'E', 'C')
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')

サンプル結果セット:

 4 | Z | 0
12 | B | 1
 1 | B | 1
 6 | A | 2
 3 | E | 4
于 2013-10-30T12:54:30.610 に答える