Mysql join没有得到正确的值

时间:2014-09-14 14:15:46

标签: mysql join

我有3张桌子

  1. movies_detais
  2. movies_revies
  3. movies_gossips
  4. 我想要的是我想要movies_relesed_type=0movies_type=1

    的所有数据

    但我没有得到理想的价值

    代码

    Select md.movies_name,
           md.movies_description,
           mr.rt_user_comments,
    mg.gossip_desc
    from movies_details md
    Inner join movies_reviews mr
    on md.movies_id=mr.movie_review_id
    Inner join movies_gossips mg
    on md.movies_id=mg.movies_gossip_id
    and md.movie_relesed_type='0'
    and md.movie_type='1'
    

    使用此代码,我只获得一行movies_relesed_type=0movies_type=1,但在我的表格中我还有其他符合条件的行,但它们没有显示。

1 个答案:

答案 0 :(得分:1)

我认为这是您需要where子句中的条件的情况:

Select md.movies_name,
       md.movies_description,
       mr.rt_user_comments,
       mg.gossip_desc
from movies_details md Inner join
     movies_reviews mr
     on md.movies_id=mr.movie_review_id left join
     movies_gossips mg
     on md.movies_id = mg.movies_gossip_id
where md.movie_relesed_type='0' and md.movie_type = '1';

left outer join返回所有第一个表中的行,即使on子句中的条件评估为非真。无论条件涉及哪个表,都是如此。因此,您无法使用on过滤left outer join子句中的第一个表。