MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのSHOW COLUMNS結果を並べ替える方法(ORDER BY活用ガイド)

MySQLでSHOW COLUMNSの実行結果を特定の順序で表示したい場合、SHOW COLUMNSステートメント自体にはORDER BY句を直接指定できません。そのようなときは、情報スキーマビュー「INFORMATION_SCHEMA.COLUMNS」を参照することで、カラム名を自由にソートできます。

基本構文

カラム名を任意の順序で取得するには、以下のようにORDER BY句を組み合わせます。

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'yourTableName'
AND column_name LIKE 'yourStartColumnName%'
ORDER BY column_name DESC;

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。以下のクエリを実行します。

mysql> create table OrderByColumnName
    -> (
    -> StudentId int,
    -> StudentFirstName varchar(10),
    -> StudentLastName varchar(10),
    -> StudentAddress varchar(20),
    -> StudentAge int,
    -> StudentMarks int
    -> );
Query OK, 0 rows affected (1.81 sec)

ケース1:降順(DESC)で並べ替える

カラム名を降順で取得するには、ORDER BY句にDESCキーワードを指定します。

mysql> SELECT COLUMN_NAME
    -> FROM INFORMATION_SCHEMA.COLUMNS
    -> WHERE table_name = 'OrderByColumnName'
    -> AND column_name LIKE 'student%'
    -> ORDER BY column_name DESC;

実行結果は以下の通りです。

+------------------+
| COLUMN_NAME      |
+------------------+
| StudentMarks     |
| StudentLastName  |
| StudentId        |
| StudentFirstName |
| StudentAge       |
| StudentAddress   |
+------------------+
6 rows in set (0.00 sec)

ケース2:昇順(ASC)で並べ替える

昇順で結果を取得したい場合は、ASCキーワードを明示的に記述する必要はありません。ORDER BYはデフォルトで昇順にソートされるためです。

mysql> SELECT COLUMN_NAME
    -> FROM INFORMATION_SCHEMA.COLUMNS
    -> WHERE table_name = 'OrderByColumnName'
    -> AND column_name LIKE 'student%'
    -> ORDER BY column_name;

実行結果は以下の通りです。

+------------------+
| COLUMN_NAME      |
+------------------+
| StudentAddress   |
| StudentAge       |
| StudentFirstName |
| StudentId        |
| StudentLastName  |
| StudentMarks     |
+------------------+
6 rows in set (0.00 sec)

補足:テーブル定義順で取得したい場合

カラム名ではなく、テーブルを作成した際の定義順(カラム番号)で取得したい場合は、ORDINAL_POSITIONカラムをソートキーに指定します。

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'OrderByColumnName'
ORDER BY ORDINAL_POSITION;

まとめ

SHOW COLUMNSの結果を並べ替えたい場合は、INFORMATION_SCHEMA.COLUMNSを参照してORDER BY句を組み合わせるのが基本です。降順ならDESCを指定し、昇順は省略できる(デフォルトで昇順)という点を覚えておくと便利です。用途に応じてORDINAL_POSITIONなど他のカラムをソートキーに使うこともできますので、ぜひ活用してください。

  1. MySQLでカラム(列)の順序を変更する方法|ALTER TABLEとAFTERの使い方

    はい、MySQLではカラム(列)の順序を変更することが可能です。ALTER TABLE文とAFTERキーワードを組み合わせることで、特定のカラムを好きな位置へ移動させられます。 1. サンプルテーブルを作成する まず、動作確認用として以下のようなテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> `Student_Key_Age` int, -> `Student_Key_Name` varchar(20), -> `Student_Key_CountryName` varchar

  2. MySQLで複数の列を並べ替える方法|ORDER BYが期待どおりに動作しないときの解決策

    MySQLでは、ORDER BY句に複数の列をカンマ区切りで指定することで、複数条件による並べ替えが可能です。各列ごとに昇順(ASC)や降順(DESC)を個別に設定できるため、柔軟なソート処理を実現できます。複数列で並べ替える基本構文以下が、複数の列を指定して並べ替える際の基本的な構文です。SELECT * FROM テーブル名 ORDER BY 列名1 DESC, 列名2, 列名3;この構文では、まず「列名1」を降順(DESC)で並べ替え、同じ値が存在する場合は次に「列名2」で昇順(デフォルト)、さらに「列名3」で並べ替えられます。並び順の優先度は、記述した列の左から右へと適用される点に注意