前置き
Mysqlでは、
シンプルにソートを行うと、
0
やNULL
は先に並べられてしまいます。
SQL
SELECT *
FROM tests
ORDER BY
rank ASC;
NULL->0->1~の順番になってしまう
+----+------+
| id | rank |
+----+------+
| 4 | NULL |
| 3 | 0 |
| 1 | 1 |
| 2 | 2 |
+----+------+
以下の方法で、NULLや0を最後に並べられるので、ぜひ使ってみてください!
NULL を最後に並べたい場合
SQL
SELECT *
FROM tests
ORDER BY
rank IS NULL ASC, /* 追加 */
rank ASC;
0->1~->NULLの順番になる
+----+------+
| id | rank |
+----+------+
| 3 | 0 |
| 1 | 1 |
| 2 | 2 |
| 4 | NULL |
+----+------+
NULL と 0 を最後に並べたい場合
SQL
SELECT *
FROM tests
ORDER BY
rank IS NULL ASC, /* 追加 */
rank = 0 ASC, /* 追加 */
rank ASC;
1~->0&NULLの順番になる
+----+------+
| id | rank |
+----+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 0 |
| 4 | NULL |
+----+------+