English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ON条件なしでMySQL JOINを使用する方法は?

「クロス結合」を使わずに使用できます。クロス結合はカールスループ形式で結果を提供します。例えば、1つのテーブルには3件のレコードがあり、もう一方のテーブルには2件のレコードがあれば、第1件のレコードは第2表のすべてのレコードと一致します。その後、同じプロセスを再び実行して第2件のレコードに進みます。

クロス結合の例

第1表を作成

mysql> CREATE table ForeignTableDemo
   - > (
   - > Id int,
   - > Name varchar(100),
   - > FK int
   - > );

第2表を作成

mysql> CREATE table PrimaryTableDemo
   - > (
   - >  FK int,
   - > Address varchar(100),
   - > primary key(FK)
   - > );

制約を追加

mysql> ALTER table ForeignTableDemo add constraint FKConst foreign key(FK) references PrimaryTableDemo(FK);
Records: 0  Duplicates: 0  Warnings: 0

第二のテーブルにレコードを追加します。

mysql> INSERT into PrimaryTableDemo values(1,'US');
mysql> INSERT into PrimaryTableDemo values(2,'UK');
mysql> INSERT into PrimaryTableDemo values(3,'Unknown');

第二のテーブルのレコードを表示します。

mysql> SELECT * from PrimaryTableDemo;

以下は上記クエリの出力です。

+----+---------+
| FK | Address |
+----+---------+
|  1 | US      |
|  2 | UK      |
|  3 | Unknown |
+----+---------+
3 rows in set (0.00 sec)

最初のテーブルにレコードを追加します。

mysql> INSERT into ForeignTableDemo values (1,'John',1);
mysql> INSERT into ForeignTableDemo values (2,'Bob',2);

SELECTコマンドを使用してレコードを表示します。

mysql> SELECT * from ForeignTableDemo;

以下は出力です。

+------+------+------+
| Id   | Name | FK   |
+------+------+------+
|    1 | John |    1 |
|    2 | Bob  |    2 |
+------+------+------+
2 rows in set (0.00 sec)

すべてのテーブルに対して外部キー制約を設定しました。ONを使用せずに「クロスジョイン」を使用する方法を見てみましょう。

mysql> SELECT ForeignTableDemo.Id, ForeignTableDemo.Name, PrimaryTableDemo.Address
   - > from ForeignTableDemo
   - > cross join PrimaryTableDemo;

これは出力です。

+------+------+---------+
| Id   | Name | Address |
+------+------+---------+
|    1 | John | US      |
|    2 | Bob  | US      |
|    1 | John | UK      |
|    2 | Bob  | UK      |
|    1 | John | Unknown |
|    2 | Bob  | Unknown |
+------+------+---------+
6 rows in set (0.00 sec)
基本チュートリアル