我有以下内容从表中返回特定帖子。正如预期的那样,它会产生11行。
-- SQL gives 11 rows
select p.ID from wp_posts p where p.ID IN (2596, 2597, 2598, 2600, 2849, 2928, 2851, 2852, 3011, 2854, 2855);
我有第二张表'wp_raceresult',它记录了一个人的比赛结果。此人在此表中只有7个结果。我希望在特定跑步者的这组比赛中获得所有比赛结果的详细信息,即每个比赛没有结果的NULL。 SQL我有atm只会产生匹配的行。
-- SQL only gives 7 rows
select p.ID,rr.leaguepoints from wp_posts p
join wp_raceresult rr on p.id=rr.race
where p.ID IN (2596, 2597, 2598, 2600, 2849, 2928, 2851, 2852, 3011, 2854, 2855)
and runner=7
我尝试过使用FULL OUTER,LEFT,RIGHT子句和UNION但没有成功。有什么想法吗?
答案 0 :(得分:2)
由于您已经提到过您已经尝试LEFT JOIN
并且您获得的结果不是您期望的结果,这是因为您在最终结果中查询runner = 7
。移动ON
子句上的语句,它将起作用。
SELECT p.ID,
rr.leaguepoints
FROM wp_posts p
LEFT JOIN wp_raceresult rr
ON p.id = rr.race AND
rr.runner = 7 -- <<=== move it here
WHERE p.ID IN (2596, 2597, 2598, 2600, 2849, 2928, 2851, 2852, 3011, 2854, 2855)
其他信息:
答案 1 :(得分:-1)
如果您需要一张表中的所有记录以及参考表中的数据匹配,您可以尝试使用LEFT JOIN
select
p.ID,
rr.leaguepoints
from wp_posts p
LEFT join wp_raceresult rr on p.id=rr.race
where p.ID IN (2596, 2597, 2598, 2600, 2849, 2928, 2851, 2852, 3011, 2854, 2855)
and runner=7