有两张表article(文章),category(分类),article表中有art_id、title、author、cate_id四个字段,category表中有cate_id、cate_name两个字段。
如图:
现在想要查出包括(art_id、title、author、cate_name)的所有文章信息怎么做?
SELECT *,cate_name
FROM
article LEFT JOIN category
ON article.`cate_id`=category.`cate_id`;
发现art_id=4的那一行因为没有匹配的值则默认使用了NULL填充,这和左查询(有的叫左外连接)的机制有关!
左查询是以左表为准(对应图中的article表),逐行在右表中进行筛选,如果有匹配到的值则正常显示,如果没有则用null填充;
如何剔除这些null值的行呢,这个时候就需要用到内连接inner join。
SELECT *,cate_name
FROM
article INNER JOIN category
ON category.cate_id=article.cate_id;
为什么会这样子,因为iner join会提取出2张表的共同交集;
这个例子中,我们可以学习到包括了左连接LEFT JOIN和内连接INNER JOIN所有连表查询的运行机制,是不是很有收获。