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

كيف يمكن استخدام JOIN في MySQL بدون شرط ON؟

我们可以不加条件地使用“交叉连接”。交叉联接以笛卡尔积形式给出结果。例如,如果一个表中有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 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)
مفضلة لك