如何在沒有 ON 條件的情況下使用 MySQL JOIN?
我們可以無需 on 條件而使用“交叉連線”。交叉連線以笛卡爾積形式給出結果。例如,如果一個表中有 3 個記錄,另一個表中有 2 個記錄,那麼第一個記錄將與第二個表中的所有記錄匹配。然後,對第二個記錄重複相同過程,依此類推。
交叉連線的示例
建立第一個表
mysql> CREATE table ForeignTableDemo - > ( - > Id int, - > Name varchar(100), - > FK int - > ); Query OK, 0 rows affected (0.47 sec)
建立第二個表
mysql> CREATE table PrimaryTableDemo - > ( - > FK int, - > Address varchar(100), - > primary key(FK) - > ); Query OK, 0 rows affected (0.47 sec)
新增約束
mysql> ALTER table ForeignTableDemo add constraint FKConst foreign key(FK) references PrimaryTableDemo(FK); Query OK, 0 rows affected (1.54 sec) Records: 0 Duplicates: 0 Warnings: 0
向第二個表中新增記錄
mysql> INSERT into PrimaryTableDemo values(1,'US'); Query OK, 1 row affected (0.10 sec) mysql> INSERT into PrimaryTableDemo values(2,'UK'); Query OK, 1 row affected (0.14 sec) mysql> INSERT into PrimaryTableDemo values(3,'Unknown'); Query OK, 1 row affected (0.08 sec)
顯示第二個表的記錄
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); Query OK, 1 row affected (0.20 sec) mysql> INSERT into ForeignTableDemo values (2,'Bob',2); Query OK, 1 row affected (0.27 sec)
使用 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)
Advertisement
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP