首先我们来看下面的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。