我正在尝试返回 round
范围内所有可用的 matches
,每一轮可以有不同的 match。所以我写了这个查询:
SELECT m.id, m.round_id, m.gameweek
FROM `match` m
LEFT JOIN competition_rounds r ON m.round_id = r.id
LEFT JOIN competition_seasons s ON r.season_id = s.id
LEFT JOIN competition c ON c.id = s.competition_id
WHERE 1 AND
m.status = 5 AND
m.round_id IN (488, 489, 490, 491) AND
m.gameweek = (SELECT MAX(m2.gameweek)
FROM `match` m2
WHERE m2.round_id IN (488, 489, 490, 491))
现在的问题是结果只返回id为488的回合的匹配
,为什么其他回合被忽略了?
谢谢。
最佳答案
我想你可能想要:
SELECT m.id, m.round_id, m.gameweek
FROM `match` m
LEFT JOIN competition_rounds r ON m.round_id = r.id
LEFT JOIN competition_seasons s ON r.season_id = s.id
LEFT JOIN competition c ON c.id = s.competition_id
WHERE 1 AND
m.status = 5 AND
m.round_id IN (488, 489, 490, 491) AND
m.gameweek = (SELECT MAX(m2.gameweek)
FROM `match` m2
WHERE m2.round_id = m.round_id))
关于mysql - IN 运算符不返回范围内的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51175361/