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 Tweet
Pingback: 11月2日の注目記事 | Javable.Jp()