最近在学Mysql的连接,多表连接,有点烧脑,记录自己的理解,能顶用就行,后面再看着改。
1.Mysql Join
以left join连接为例介绍。 
图 1
如图1所示,我发现在关键字 left join(见图1红色框框处)左边的表(见图1蓝色椭圆圈起来的)customers是‘左表’,而关键字 left join(见图1红色框框处)右边的表(见图1蓝色椭圆圈起来的)orders是‘右表’。
其次,右表可能有空值。什么意思?什么是左连接?见图2所示。 并且sql代码如下所示:
SELECT customers.`customer_id`,customers.`last_name`,orders.order_id
FROM customers
LEFT JOIN orders ON customers.`customer_id`= orders.`customer_id`;

图2
我们首先从customers表找到customer_id和last_name(见红色框框处),要想select到order_id(见绿色框),就让customers表再左连接orders表,而他们俩之所以能连接,全凭借customers表的customer_id和orders表的customer_id一样(见粉色框),能产生关系。我们右表orders去匹配左表customers时发现,orders_id列有空值出现(见紫色框),我们可以对应原表发现,比如customer_id为2的,在orders表中去查——没有对应的cstomers_id,也就没有匹配对应的order_id数值了。
Mysql连接:LEFT JOIN 返回左表中所有行,当右表中没有匹配的行时(即右表来匹配左表),相关列将显示为 NULL。;RIGHT JOIN 返回右表的所有行,并包括左表中匹配的行(即左表来匹配右表),如果左表中没有匹配的行,将返回 NULL 值。RIGHT JOIN 不常用,因为可以用 LEFT JOIN 和表的顺序交换来实现相同的效果。
&spm=1001.2101.3001.5002&articleId=146402119&d=1&t=3&u=a3b1310039f348c7996a658a9f2e90ac)
1670

被折叠的 条评论
为什么被折叠?



