物覚えの悪いプログラマの備忘録

このブログには私が試してみたことを記載していっております。忘れたときのために備忘録として利用しているだけですので、間違ったことを書いているかもしれません。 みなさまの役に立つ情報があれば幸いです。

mysql任意の値を一番上、または一番下にしてソートする

$sql = "SELECT * FROM table_name order by case colum1 when '-' then 2 else 1 end, colum1,data1 asc;";

解説


order by
//もしcolum1が'-'ならば優先順位2番目にソートして
case colum1 when '-' then 2
//それ以外は優先順位1でソートする
else 1 end,
//この条件でcolum1をソート
colum1
//次にdata1でソートする
,data1 asc


逆パターン

order by
//もしcountry_nameが'Japan'ならば優先順位1番目でソートして
case country_name when 'Japan' then 1
//それ以外は優先順位2番目にソートする
else 1 end,
//この条件でcountry_nameをソート
country_name
//次にdata1でソートする
,data1 asc


その他複数できそう
order by
//もしcountry_nameが'Japan'ならば優先順位1番目でソートして
case country_name
when 'Japan' then 1
when 'USA' then 2
//それ以外は優先順位2番目にソートする
else 3 end,
//この条件でcountry_nameをソート
country_name