Home » Programing, Server » mysqlでWHERE IN句で指定した順にORDER BYする方法

Check     このエントリーをはてなブックマークに追加

mysqlでのSQL小ネタ。

ORDER BYで任意のIDなど、順番で並べることをSQLでやる方法。

結論から言うと、mysql標準のFIELD関数を使う。

FIELD(str, str1, str2, str3, …)

第1引数のstrの開始位置を見つけてくれる。

SELECT FIELD(‘abc’, ‘dad’, ‘asd’, ‘dec’, ‘abc’, ‘ced’);

->4

上記の例で見ると、第1引数の「abc」は第2引数以降の4番目に出てくるので、この関数の値は「4」となる。

見つからない場合は「0」となる。

これをORDEB BYで応用して、例えば「4,1,2」で並べたい場合、

SELECT id WHERE tables WHERE id IN (4, 1, 2) ORDER BY FIELD(id, 4, 1, 2);

FIELDの4が1番目にあるため、4が1、1が2、2が3番目に並ぶということである。

スピードは期待できないが、SQLで順番を任意に並べたい場合に便利。

Check     このエントリーをはてなブックマークに追加
タグ: