一个简单例子理解连表查询

有两张表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所有连表查询的运行机制,是不是很有收获。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值