MySQLにてORDER BYで並べ替える際に空のカラムは後ろに持ってくる方法
MySQLにてORDER BYで並べ替える際に空のカラムの場合は後ろに持っていき、その上でID(通し番号)順に並べ替えたい。具体的には「空じゃないカラムのID順→空のカラムのID順」という順序に並べ替えたい。以下に対応方法をメモ。
テーブル構造
mysql> SHOW COLUMNS FROM `test_table`; +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | name | varchar(255) | NO | | NULL | | +-------+--------------+------+-----+---------+----------------+
データ内容
mysql> TABLE `test_table`; +----+--------+ | id | name | +----+--------+ | 1 | 山田 | | 2 | | | 3 | 鈴木 | | 4 | | | 5 | 田中 | +----+--------+
対応方法
SELECT *
FROM `test_table`
ORDER BY
CASE
WHEN `name` IS NULL THEN "2"
WHEN `name` = "" THEN "1"
else "0"
END,
`id` ASC;
+----+--------+
| id | name |
+----+--------+
| 1 | 山田 |
| 3 | 鈴木 |
| 5 | 田中 |
| 2 | |
| 4 | |
+----+--------+
nameカラムが空のデータを後ろに持っていき、その上でID順にソートされた。
関連記事
-
-
MySQLでdatetime型にもインデックスを使用して高速化を図る方法
ログ関連のデータを格納するテーブルがあり、集計を行う際に非常に時間がかかった。レ ...
-
-
MySQLでSELECT時に数値を3桁ずつのカンマ区切りに変換する方法
MySQLで商品価格のような数値の値を3桁ずつのカンマ区切りで取り出したいという ...
-
-
MySQLでテーブルのカラム名やカラムの型等、詳細情報を取得する方法
MySQLでテーブルのカラム名やカラムの型等、詳細情報を取得する方法をメモ。 & ...
-
-
MySQLとPHPの「image-comparator」ライブラリを使用して類似画像検索を実装する方法
先日PHPで画像を比較して類似度を算出する「image-comparator」ラ ...
-
-
PHPからMySQLにシリアライズしたデータを格納
アンケートフォームみたいなのがあって、 今後も定期開催し、尚且つ質問内容は増減す ...