SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')
フィールド 関数は、残りの文字列リストの最初の文字列の位置を返します。
ただし、パフォーマンスの面では、並べ替え順序を表すインデックス付きの列を用意してから、この列で並べ替える方がはるかに優れています。
SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')
フィールド 関数は、残りの文字列リストの最初の文字列の位置を返します。
ただし、パフォーマンスの面では、並べ替え順序を表すインデックス付きの列を用意してから、この列で並べ替える方がはるかに優れています。