MySQLで一部の列だけを表示する方法|SHOW COLUMNSとNOT INの使い方
MySQLで一部の列だけを表示するには?
MySQLでテーブルの列情報を確認する際、「特定の列を除外して表示したい」「必要な列だけを表示したい」というケースがあります。そんなときは、SHOW COLUMNS文とNOT IN演算子を組み合わせることで、表示したくない列を簡単に除外できます。
この記事では、サンプルテーブルを使いながら、具体的な手順をわかりやすく解説します。
1. サンプルテーブルの作成
まずは動作確認用のテーブルを作成しましょう。以下がそのクエリです。
mysql> create table student_Information
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(50),
-> StudentAge int,
-> StudentAddress varchar(100),
-> StudentAllSubjectScore int
-> );
Query OK, 0 rows affected (0.69 sec)
このテーブルには、学生ID・氏名・年齢・住所・全科目合計スコアの5つの列が定義されています。
2. テーブル構造の確認
作成したテーブルの構造を確認するには、DESCコマンド(DESCRIBE)を使用します。
mysql> desc student_Information;
実行すると、次のような出力が得られます。
+------------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------------+--------------+------+-----+---------+----------------+ | StudentId | int(11) | NO | PRI | NULL | auto_increment | | StudentName | varchar(50) | YES | | NULL | | | StudentAge | int(11) | YES | | NULL | | | StudentAddress | varchar(100) | YES | | NULL | | | StudentAllSubjectScore | int(11) | YES | | NULL | | +------------------------+--------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec)
このように、通常はすべての列情報が表示されます。
3. NOT INを使って特定の列を除外して表示する
ここで、たとえば「StudentAddress」と「StudentAllSubjectScore」の2つの列を除いた列情報だけを表示したいとします。その場合は、WHERE句とNOT INを次のように組み合わせます。
mysql> SHOW COLUMNS FROM student_Information WHERE Field NOT IN ('StudentAddress','StudentAllSubjectScore');
実行結果は以下の通りです。
+-------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+----------------+ | StudentId | int(11) | NO | PRI | NULL | auto_increment | | StudentName | varchar(50) | YES | | NULL | | | StudentAge | int(11) | YES | | NULL | | +-------------+-------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
指定した2つの列が除外され、残りの3列だけが表示されていることがわかります。このように、「除外したい列」をNOT INで指定するのがポイントです。
補足:逆に表示したい列を直接指定する方法
NOT INではなくINを使えば、「表示したい列だけ」を直接指定することもできます。
mysql> SHOW COLUMNS FROM student_Information WHERE Field IN ('StudentId','StudentName','StudentAge');
また、列の構造ではなく実際のデータを取得したい場合は、SELECT文で表示したい列名を明示的に列挙するのが一般的です。
mysql> SELECT StudentId, StudentName, StudentAge FROM student_Information;
まとめ
MySQLで一部の列だけを表示するには、SHOW COLUMNS文にWHERE Field NOT IN (...)を付けて、除外したい列を指定します。逆に必要な列だけを絞り込みたい場合はINを使うと便利です。用途に応じて使い分けましょう。
-
MySQLのすべてのテーブルを1行で一覧表示する方法
MySQLの全テーブルを1行で表示するには? MySQLですべてのテーブルを一覧表示したい場合は、information_schema.tablesを利用します。このシステムビューに対してデータベース名(スキーマ名)をWHERE句で指定することで、特定のデータベースに属するテーブルだけを抽出できます。 さらにGROUP_CONCAT()関数を組み合わせると、複数のテーブル名をカンマ区切りで1行にまとめて取得することも可能です。 実行例:データベース「web」の全テーブルを表示する 次のクエリでは、データベース「web」内のすべてのテーブル名を1行で取得します。 mysql> SELECT
-
MySQLで2つの列の中から最大値を取得し、NULLを含むレコードも正しく扱う方法
MySQLには複数の値の中から最大値を返すGREATEST()関数があります。しかし、引数のどれかにNULLが含まれている場合、GREATEST()は結果としてNULLを返してしまうという注意点があります。本記事では、IF()関数を使ってNULLを0に置き換えることで、2つの列の中から最大値を正しく取得する方法を、実際のSQL例とともに解説します。サンプルテーブルの作成まず、2つの整数型カラム(Value1、Value2)を持つテーブルを作成します。mysql> create table DemoTable -> ( -> Value1 int, ->