フラグが立っているものを優先して取得するクエリ


例えば、orderはcreated_atですが、flag=trueのものだけ先に取得して、次にそれ以外を取得したい場合、どういう風にクエリを投げるのがシンプルでしょうか？




フラグはブーリアンのカラムだったら、普通のソートで十分だと思います：

[code]

    SELECT * FROM t ORDER BY flag DESC, created_at;
    
[/code]

ブーリアンではない場合、MySQLの[`IF`](https://dev.mysql.com/doc/refman/5.7/en/control-flow-
functions.html#function_if)でブーリアンに変換できます：

[code]

    SELECT *
    FROM t
    ORDER BY IF(flag = 'xxx', 1, 0) DESC, created_at;
    
[/code]




フラグはブーリアンのカラムだったら、普通のソートで十分だと思います：

[code]

    SELECT * FROM t ORDER BY flag DESC, created_at;
    
[/code]

ブーリアンではない場合、MySQLの[`IF`](https://dev.mysql.com/doc/refman/5.7/en/control-flow-
functions.html#function_if)でブーリアンに変換できます：

[code]

    SELECT *
    FROM t
    ORDER BY IF(flag = 'xxx', 1, 0) DESC, created_at;
    
[/code]

