MySQLやSQLで使えるTips

クエリを指定した順番でソートする

  • ORDER BY `colomn name` ASC では当たり前だが通常ソートになる。
  • 指定した順番どおりにクエリを取り出したい。
    • 行数分だけSELECT書くのはスマートでないし、処理的にも重すぎる。
SELECT * FROM `table` WHERE `colomn` IN ('2','3','4') ORDER BY FILED(`colomn`, '2','3','4');
  • `colomn` IN ()で絞り込み
  • ORDER BY FIELD(`colomn`, values)でこの順番で並べる

クエリをランダムでソート(?)する

  • 何らかの理由があってランダムでクエリを取り出したい場合。
    • 全部SELECTして配列に取り込んでランダムするのはスマートでないし、処理的にも重すぎる。
SELECT * FROM `table` WHERE `colomn` = '1' ORDER BY rand();