MAX在WHERE子句中返回所有记录

时间:2018-07-04 13:09:54

标签: mysql sql pdo

我试图返回特定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的比赛。为什么我在比赛周都能获得所有比赛?

1 个答案:

答案 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中的列,因此这似乎是查询中唯一需要的表。