大家好。
我在MySQL中遇到了一个问题。我尝试了各种可能的连接(自然,内部,外部)。所有这些都为我回归了笛卡尔积。
我只想在两个表之间进行自然连接。
select * from customer natural join ProcessH;
我使用where clause , and join ON clause
尝试了此查询。但我仍然收到笛卡尔产品
答案 0 :(得分:1)
NATURAL JOIN使用公共列作为连接条件。
,例如
T1(X,Y,Z) T2(Y,Z,W)
将加入T1.Y = T2.Y和T1.Z = T2.Z。
如果您没有常用的列名,则可以获得交叉产品。
编辑:
示例:
create table T1(x int, y int, z int);
create table t2(y int, z int, w int);
insert into T1 values (1,2,3), (10,20,30);
insert into T2 values (2,3,4), (20,30,40);
select * from T1 natural join T2;
给你
+------+------+------+------+
| y | z | x | w |
+------+------+------+------+
| 2 | 3 | 1 | 4 |
| 20 | 30 | 10 | 40 |
+------+------+------+------+
但是
create table T3(x int, y int);
create table T4(z int, w int);
insert into T3 values (1,2), (10,20);
insert into T4 values (3,4), (30,40);
select * from T3 natural join T4;
给你:
+------+------+------+------+
| x | y | z | w |
+------+------+------+------+
| 1 | 2 | 3 | 4 |
| 10 | 20 | 3 | 4 |
| 1 | 2 | 30 | 40 |
| 10 | 20 | 30 | 40 |
+------+------+------+------+