我试图返回特定MAX
的可用match
的{{1}}游戏周,为此,我使用了round
函数,但我得到了所有一轮的MAX
个游戏周,相反,我应该只获得matches
个游戏周的matches
。
这是我的查询
MAX
结果是:
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 = 488 OR m.round_id = 489 OR m.round_id = 490 OR m.round_id = 491
AND m.gameweek = (SELECT MAX(gameweek) FROM `match` WHERE (round_id = 488) OR (round_id = 489) OR (round_id = 490) OR (round_id = 491))
我希望只有ID为1979012、1979014的比赛。为什么我在比赛周都能获得所有比赛?
答案 0 :(得分:0)
我认为您只需要括号即可。或者更好的方法是使用in
:
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)
)
我完全不清楚为什么您要将这么多表连接在一起。您只引用match
中的列,因此这似乎是查询中唯一需要的表。