mysql - IN 运算符不返回范围内的所有记录

标签 mysql sql pdo

我正在尝试返回 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/

相关文章:

mysql - 计算来自不同sql表的同名列

sql - PostgreSQL 更新日期范围

php - PDO PHP 中的日期格式

php - 配置 : error: Cannot find OpenSSL's <evp. h>

创建存储过程时MySQL版本差异?

mysql - MariaDB 使用哪种 SQL 变体?

PHP 表单验证器/MySQL 插入

mysql - 堆叠式 SQL 查询错误和并发症

sql - SQL - 使用 LIKE 进行多个值的部分匹配

php - PDO MySQL 连接关闭 - 未设置与空