MySQLで複数のSELECTクエリを一度に実行する方法【DELIMITER活用】
MySQLで複数のSELECTクエリを一度に実行するには、DELIMITERの概念を利用します。この記事では、実際にテーブルを作成しながら、複数のSELECT文をまとめて実行する手順をわかりやすく解説します。
準備:サンプルテーブルの作成
まず、1つ目のテーブルを作成します。
mysql> create table DemoTable1
(
Title text
)ENGINE=MyISAM;
Query OK, 0 rows affected (0.30 sec)
次に、INSERTコマンドを使ってテーブルにレコードを挿入します。
mysql> insert into DemoTable1 values('The database MySQL is less popular than MongoDB');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1 values('Java language uses MySQL database');
Query OK, 1 row affected (0.05 sec)
mysql> insert into DemoTable1 values('Node.js uses the MongoDB');
Query OK, 1 row affected (0.05 sec)
SELECT文でテーブルの全レコードを表示してみましょう。
mysql> select *from DemoTable1;
実行結果は以下の通りです。
+-------------------------------------------------+ | Title | +-------------------------------------------------+ | The database MySQL is less popular than MongoDB | | Java language uses MySQL database | | Node.js uses the MongoDB | +-------------------------------------------------+ 3 rows in set (0.00 sec)
2つ目のテーブルを作成する
続いて、2つ目のテーブルを作成します。AUTO_INCREMENT属性を設定した主キー列を持つテーブルです。
mysql> create table DemoTable2
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY
);
Query OK, 0 rows affected (0.45 sec)
こちらのテーブルにもINSERTコマンドでレコードを追加します。AUTO_INCREMENTにより、値を明示的に指定しなくても連番が自動的に採番されるのがポイントです。
mysql> insert into DemoTable2 values(),(),(),(),(),(),(),(),(); Query OK, 9 rows affected (0.19 sec) Records: 9 Duplicates: 0 Warnings: 0
SELECT文で全レコードを確認します。
mysql> select *from DemoTable2;
実行結果は以下の通りです。
+----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | +----+ 9 rows in set (0.00 sec)
DELIMITERを使って複数のSELECTクエリを実行する
それでは、複数のSELECTクエリを一度に実行してみましょう。以下のようにDELIMITERで区切り文字を変更します。
mysql> DELIMITER // mysql> select *from DemoTable1; select *from DemoTable2; //
このクエリを実行すると、両方のSELECT文の結果がまとめて表示されます。
+-------------------------------------------------+ | Title | +-------------------------------------------------+ | The database MySQL is less popular than MongoDB | | Java language uses MySQL database | | Node.js uses the MongoDB | +-------------------------------------------------+ 3 rows in set (0.00 sec) +----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | +----+ 9 rows in set (0.03 sec)
まとめ
DELIMITERで区切り文字を変更することで、複数のSELECTクエリをひとまとまりとして実行できます。通常のセミコロン(;)の代わりに、任意の区切り文字(例://)を指定することで、複数の文をまとめて送信・実行できるのがポイントです。この手法はストアドプロシージャの作成時などにも頻繁に使われるテクニックなので、ぜひ覚えておきましょう。
-
MySQLで再帰的なSELECTクエリを実行する方法【初心者向けに具体例つきで解説】
MySQLでは、ユーザー定義変数(セッション変数)を活用することで、再帰的なSELECTクエリを実現できます。本記事では、実際にテーブルを作成し、データを挿入したうえで、再帰的なSELECTの具体的な書き方を順を追って解説します。 1. サンプルテーブルの作成 まず、再帰的なSELECTを試すためのサンプルテーブルを作成します。テーブルの作成にはCREATEコマンドを使用します。 mysql> CREATE table tblSelectDemo - > ( - > id int, - > name varchar(100) - > );
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected