有收获吗?是的-左联接是外联接的一种形式,而内联接是内联接的一种形式。
这是显示差异的示例。我们将从基本数据开始:
mysql> select * from j1;+----+------------+| id | thing |+----+------------+| 1 | hi || 2 | hello || 3 | guten tag || 4 | ciao || 5 | buongiorno |+----+------------+mysql> select * from j2;+----+-----------+| id | thing |+----+-----------+| 1 | bye || 3 | tschau || 4 | au revoir || 6 | so long || 7 | tschuessi |+----+-----------+
在这里,我们将看到内部联接和左联接之间的区别:
mysql> select * from j1 inner join j2 on j1.id = j2.id;+----+-----------+----+-----------+| id | thing | id | thing |+----+-----------+----+-----------+| 1 | hi | 1 | bye || 3 | guten tag | 3 | tschau || 4 | ciao | 4 | au revoir |+----+-----------+----+-----------+
嗯,三排。
mysql> select * from j1 left join j2 on j1.id = j2.id;+----+------------+------+-----------+| id | thing | id | thing |+----+------------+------+-----------+| 1 | hi | 1 | bye || 2 | hello | NULL | NULL || 3 | guten tag | 3 | tschau || 4 | ciao | 4 | au revoir || 5 | buongiorno | NULL | NULL |+----+------------+------+-----------+
哇,五排!发生了什么?
外部联接(例如
left join保留不匹配的行)-因此ID为2和5的行由左联接查询保留。其余的列用NULL填充。
换句话说,左连接和内部连接不可互换。



