首先我们来看下面的sql代码。我们思考一个问题:如果简单按照如下方法找的话有个问题:那就是b表中的任一行在b中没有对应的aid的时候,那行的数据就读不出来,为了解决这样的问题。

SELECT
    a.id,
    b.id
FROM
    a,b
where(a.id = b.aid)

可以使用left join,用法如下:

SELECT
    a.id,
    b.id
FROM
    a
LEFT JOIN b
ON(a.id = b.aid)

使用场景:A表跟B表的关系是1对0...*,因为B表中有可能没有A表对应的外键,所以会导致A表中的某些数据无法读取。

例子:表A是用户表,表B是评价表。假如我们想要 知道某个用户的所有评论的时候,我们就要使用left join。如下:

select a.id,a.user_name,b.comment
from a left join b
on a.id = b.user_id and a.user_id = 3

这样,即使id为3的用户没有评论,我们也能得到id为3的用户的名字。提醒:那样的话得到的b.comment的值为null。