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順にソートされた。
関連記事
-
-
Codeigniter4でMySQLに接続しCRUD操作する方法
Codeigniter4.4.4でMySQLに接続しCRUD操作したい。また、任 ...
-
-
MySQLにて直近のクエリで発行されたAUTO_INCREMENTの値を取得する方法
やりたかったことは「MySQLで新規登録(INSERT)なら、登録時のAUTO_ ...
-
-
MySQLにてdate型のカラムから曜日を計算し表示する方法
MySQLにてdateもしくはdatetime型のデータを取り出して曜日もあわせ ...
-
-
MySQLにてSELECT時にdate型のカラムから年齢を計算し取得する方法
MySQLにdate型のカラムに誕生年月日が格納されており、そこから年齢を計算し ...
-
-
MySQLでカラム数の異なるテーブルを結合する(UNION)
MySQLでカラム数の異なるテーブル同士をUNIONで結合させたかった。ただ、何 ...