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