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

ON 조건 없이 MySQL JOIN을 사용하는 방법?

우리는 조건 없이 '교차 연결'을 사용할 수 있습니다. 교차 연결은笛卡尔 곱 형태로 결과를 제공합니다. 예를 들어, 하나의 테이블에3개의 기록이 있으며, 다른 테이블에는2개의 기록이 있으면, 첫 번째 기록은 두 번째 테이블의 모든 기록과 일치하게 됩니다. 그런 다음, 두 번째 기록을 위해 동일한 과정을 반복하여 계속됩니다.

교차 연결 예제

첫 번째 테이블 생성

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

두 번째 테이블 생성

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 set의 rows (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 set의 rows (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 set의 rows (0.00 sec)