MySQLで特定の行から単一の値だけを取得する方法(SELECT INTOの使い方)
MySQLで特定の条件に一致する行から、単一の値だけを変数に取得したい場合は、SELECT ... INTO 変数構文とWHERE句を組み合わせて使用します。この記事では、実際のテーブル作成から値の取得までの手順を順番に解説します。
1. サンプルテーブルを作成する
まずは動作確認用のテーブルを作成しましょう。学生ID・氏名・点数を持つシンプルなテーブルを定義します。
mysql> create table DemoTable1896
(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName varchar(20),
StudentMarks int
);
Query OK, 0 rows affected (0.00 sec)
2. テストデータを挿入する
INSERT文を使って、いくつかのレコードを登録します。
mysql> insert into DemoTable1896(StudentName,StudentMarks) values('Chris',56);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1896(StudentName,StudentMarks) values('David',98);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1896(StudentName,StudentMarks) values('Mike',89);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1896(StudentName,StudentMarks) values('Sam',78);
Query OK, 1 row affected (0.00 sec)
3. 登録されたデータを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select * from DemoTable1896;
実行結果は以下のとおりです。
+-----------+-------------+--------------+ | StudentId | StudentName | StudentMarks | +-----------+-------------+--------------+ | 1 | Chris | 56 | | 2 | David | 98 | | 3 | Mike | 89 | | 4 | Sam | 78 | +-----------+-------------+--------------+ 4 rows in set (0.00 sec)
4. 特定の行から単一の値を変数に取得する
ここが本題です。まずユーザー定義変数をNULLで初期化し、その後WHERE句で条件を指定してSELECT ... INTOで値を変数に格納します。以下の例では、点数が98の学生の名前を取得しています。
mysql> set @Name:=NULL; Query OK, 0 rows affected (0.00 sec) mysql> select StudentName into @Name from DemoTable1896 where StudentMarks=98; Query OK, 1 row affected (0.00 sec)
5. 取得した変数の値を表示する
変数の中身を確認するには、次のようにSELECT文を実行します。
mysql> select @Name;
実行結果は以下のとおりです。
+-------+ | @Name | +-------+ | David | +-------+ 1 row in set (0.00 sec)
ポイントまとめ
SELECT カラム名 INTO @変数名 FROM テーブル名 WHERE 条件の形式で、特定の行の単一の値を変数に格納できます。- 事前に
SET @変数名 := NULL;で初期化しておくと、条件に一致しなかった場合でも前回の値が残らず安全です。 - INTOで取得できるのは1行1カラムの値のみです。複数行が該当する可能性がある場合は、LIMIT 1 を併用するか、条件を一意に絞り込むようにしましょう。
-
MySQLでテーブルから特定の行を抽出するクエリの書き方
MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),
-
MySQLで重複行を除外して1行だけ取得する方法(DISTINCTの使い方)
MySQLで重複行から1行のみを返すには?MySQLのテーブルに同じ値を持つ重複行が存在する場合、DISTINCTキーワードを使うことで、重複を排除した一意な行だけを取得できます。この記事では、実際にテーブルを作成し、データを挿入したうえで、DISTINCTによる重複除去の手順を解説します。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1998 ( Name varchar(20) ); Query OK, 0 rows affected (0.61 sec)2. レコードを挿入するINSERTコマンドを