带有IN子句的MYSQL JOIN

eme*_*ava 6 mysql

我有以下内容从表中返回特定的帖子.正如所料,它给出了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);
Run Code Online (Sandbox Code Playgroud)

我有第二张表'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
Run Code Online (Sandbox Code Playgroud)

我尝试过使用FULL OUTER,LEFT,RIGHT子句和UNION但没有成功.任何的想法?

Joh*_*Woo 3

既然你提到你已经尝试过并且得到的结果不是你期望的结果,那是因为你在最终结果中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)
Run Code Online (Sandbox Code Playgroud)

附加信息: