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

2つのテーブルに対する単一のMySQL SELECTクエリは可能ですか?

はい、可能です。FROM句にカンマ区切りで複数のテーブル名を指定することで、単一のSELECTクエリで2つのテーブルからデータを取得できます。基本的な構文は以下の通りです。

select * from yourTableName1,yourTableName2;

なお、この書き方では両テーブルの全行が組み合わされた「クロス結合(直積)」の結果が返される点に注意してください。

サンプルテーブルの作成

まず、1つ目のテーブルを作成します。

mysql> create table DemoTable1
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY
    -> );
Query OK, 0 rows affected (0.54 sec)

insertコマンドを使って、テーブルにレコードを挿入します。

mysql> insert into DemoTable1 values(),(),();
Query OK, 3 rows affected (0.14 sec)
Records: 3  Duplicates: 0  Warnings: 0

selectステートメントでテーブル内の全レコードを表示してみましょう。

mysql> select * from DemoTable1;

実行すると、次のような出力が得られます。

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
+----+
3 rows in set (0.00 sec)

2つ目のテーブルを作成する

続いて、2つ目のテーブルを作成するクエリは以下の通りです。

mysql> create table DemoTable2
    -> (
    -> FirstName varchar(10)
    -> );
Query OK, 0 rows affected (0.58 sec)

こちらにもinsertコマンドでレコードを挿入します。

mysql> insert into DemoTable2 values('Chris'),('David'),('Sam');
Query OK, 3 rows affected (0.10 sec)
Records: 3  Duplicates: 0  Warnings: 0

selectステートメントで全レコードを確認します。

mysql> select * from DemoTable2;

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

+-----------+
| FirstName |
+-----------+
| Chris      |
| David      |
| Sam        |
+-----------+
3 rows in set (0.00 sec)

2つのテーブルに対するSELECTクエリの実行

それでは、2つのテーブルに対してSELECTクエリを実行してみましょう。クエリは以下の通りです。

mysql> select Id,FirstName from DemoTable1,DemoTable2;

実行すると、次のような出力が得られます。

+----+-----------+
| Id | FirstName |
+----+-----------+
|  1 | Chris      |
|  2 | Chris      |
|  3 | Chris      |
|  1 | David      |
|  2 | David      |
|  3 | David      |
|  1 | Sam        |
|  2 | Sam        |
|  3 | Sam        |
+----+-----------+
9 rows in set (0.00 sec)

上記の出力を見ると、DemoTable1の各行(Id 1〜3)とDemoTable2の各行(Chris、David、Sam)がすべて組み合わされ、合計9行(3×3)の結果が返されていることがわかります。これは結合条件を指定しない場合の標準的な動作です。特定の条件でテーブル同士を関連付けて取得したい場合は、JOIN句やWHERE句で結合条件を明示的に指定することをおすすめします。

  1. MySQLで1つのクエリを使ってSELECTとINSERTを同時に実行する方法

    MySQLでは、INSERT INTO ... SELECT構文とUNION ALLを組み合わせることで、1つのクエリだけで別テーブルからデータを選択(SELECT)し、挿入(INSERT)することができます。本記事では、実際のサンプルコードを使ってその手順をわかりやすく解説します。1. 最初のテーブルを作成するまず、データの挿入先となる最初のテーブルを作成します。以下のクエリを実行してください。mysql> create table DemoTable1 -> ( -> StudentName varchar(20), -> StudentMarks

  2. MySQLの1つのUPDATE文で2つの列を同時に更新する方法

    はじめにMySQLでは、1つのUPDATE文の中でSET句を一度だけ使えば、複数の列を同時に更新できます。各列の指定はカンマ(,)で区切って記述します。この記事では、実際にテーブルを作成し、1つのクエリで2つの列(FirstNameとLastName)を更新する手順を解説します。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1909 ( Id int NOT NULL, FirstName varchar(20), LastName varchar(20)