一個簡單例子理解連表查詢

有兩張表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所有連表查詢的運行機制,是不是很有收穫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章