我有三张桌子
Racer( racerID, racerName)
Race (raceID, raceName)
RaceJoinRacer(raceID, racersID)
我不知道sql语句将检索哪个“racer”参加了哪个“race”。
这就是我目前所拥有的:
SELECT racerName, raceName
FROM Racer, Race
JOIN RaceJoinRacer
ON RaceJoinRacer.raceID= Race.raceID
最佳答案
您正在混合隐式和显式连接语法。不要在FROM
子句中使用逗号。相反,使用两个JOIN
语句,这意味着MySQL中有INNER JOIN
语句。
SELECT
racerName,
raceName
FROM
Race
JOIN RaceJoinRacer ON RaceJoinRacer.raceID = Race.raceID
JOIN Racer ON RaceJoinRacer.racersID = Racer.racerID
如果您想包括未参加任何比赛的
Racer
表中的赛车手,请在LEFT JOIN
和Racer
之间使用RaceJoinRacer
:SELECT
racerName,
raceName
FROM
Racer
LEFT JOIN Racer ON RaceJoinRacer.racersID = Racer.racerID
JOIN RaceJoinRacer ON RaceJoinRacer.raceID = Race.raceID