我有这个表(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
但没有用。
答案 0 :(得分:4)
将inner join
替换为left join
。这将为tblExample
和tblRating
或null
提供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,
之间的区别