mysqlのorder byに条件をつけてみる

select文のorder句は、並び替えをする。

たとえば、

SELECT * FROM items ORDER BY name;

とすると、nameの昇順に並び替わるというもの。

BYの次に条件をつけると挙動が変わる。

SELECT * FROM items ORDER BY name='unco' DESC;

これだとnameがuncoのものが一番最初になる。
奇妙だ。

他にも、

SELECT * FROM items ORDER BY age <= 5 DESC;

とすると、ageが5以下のものが一番上に並ぶことになる。
非常に奇妙だ。

全てのデータベースでできるような書き方なのかは知らんが、mysqlとsqliteではこういう動作になった。

タイトルとURLをコピーしました