8943
例えば、orderはcreated_atですが、flag=trueのものだけ先に取得して、次にそれ以外を取得したい場合、どういう風にクエリを投げるのがシンプルでしょうか？
CC BY-SA 3.0
2015-04-09T04:14:26.977
8930
2015-04-09T07:39:56.850
525
question
mysql
フラグが立っているものを優先して取得するクエリ
`order by flag desc, created_at`じゃダメですか？

2回投げるのなら素直に`where flag=true`と`where flag=false`になるのではないでしょうか？
CC BY-SA 3.0
2015-04-09T04:18:06.000
8931
2015-04-09T04:26:43.690
2015-04-09T04:26:43.690
2383
2383
8930
answer
フラグはブーリアンのカラムだったら、普通のソートで十分だと思います：

```

    SELECT * FROM t ORDER BY flag DESC, created_at;
    
```

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

```

    SELECT *
    FROM t
    ORDER BY IF(flag = 'xxx', 1, 0) DESC, created_at;
    
```
CC BY-SA 3.0
2015-04-09T07:32:37.880
8943
2015-04-09T07:39:56.850
2015-04-09T07:39:56.850
3371
3371
8930
answer