mysql中join之后的條件


看一個sql語句

SELECT
  n.cat_id,
  c.cat_id
FROM site_news n LEFT JOIN site_news_category c
    ON n.cat_id = c.cat_id AND c.cat_id = 21;

奇怪的是,它的結果集是這個樣子的

命名都把site_news_category.cat_id設置成21了...甚至on之后在加一個條件 and c.cat_id is not null,其結果集也是如此

但當sql改成這個樣子

SELECT
  n.cat_id,
  c.cat_id
FROM site_news n LEFT JOIN site_news_category c
    ON n.cat_id = c.cat_id
WHERE c.cat_id = 21;

它的結果就符合預期了.

百度之后,看到這樣一個結論:

假如是左連接的話,如果左邊表的某條記錄不符合連接條件,那么它不進行連接,但是仍然留在結果集中(此時右邊部分的連接結果為NULL)

才知道困惑我的原因竟在於此


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM