SQL - 当它们不存在时,不从另一个表中检索记录

时间:2015-07-04 10:54:03

标签: mysql sql select join

我有这个表(tblExample):

ID   U_ID   Title   Desc    Cat       SubCat     Country     Date
----------------------------------------------------------------------------
1    2      Title1  Desc1   Orange    Blue       England     12/05/2015
2    3      Title2  Desc2   Orange    Blue       England     12/05/2015                    
3    2      Title3  Desc2   Orange    Blue       England     12/05/2015

然后我有另一张桌子(tblRating):

ID   U_ID   rating
------------------
1    2      4
2    2      2                      
3    2      4  

如果我执行如下的SQL语句:

select e.*, r.* 
from tblExample e
inner join tblRating r on e.U_ID = r.U_ID

我得到的结果只是U_ID = 2的详细信息,但我仍希望显示U_ID = 3,这是tblRating中没有记录的用户。我怎样才能做到这一点?我试过left join但没有用。

2 个答案:

答案 0 :(得分:4)

inner join替换为left join。这将为tblExampletblRatingnull提供tblRating匹配行的所有相关行:

SELECT    e.*, r.* 
FROM      tblExample e 
LEFT JOIN tblRating r ON e.U_ID = r.U_ID

答案 1 :(得分:2)

这是因为加入问题,当您执行 INNER JOIN 时,只会返回两个表中的匹配记录。

如果您想从第一张表中获取所有记录,而只想从第二张表中获取匹配的记录,那么您需要执行 LEFT JOIN

select 
    first.*, 
    second.* 
from tblExample first
    LEFT JOIN tblRating second on first.U_ID = second.U_ID

对于第二个表,如果条件不匹配,它将返回NULL。

您也可以参考此问题,了解JOINS

之间的区别