我有一个名为 fixtures
的表包含此结构:
id | comp_id | round_id |
1 10 11
2 10 12
3 10 11
我只想得到一个“round_id”的所有结果,所以最终结果应该是:1、3或2
我做了这个查询:
SELECT *
from fixtures f
LEFT
JOIN rounds r
ON r.id = (SELECT MIN(id) FROM rounds WHERE id = f.round_id)
WHERE comp_id = 10
但这将返回所有可用的赛程记录,我只需要返回单轮的赛程,但我不知道编号。
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `rounds` (
`id` INT NOT NULL AUTO_INCREMENT,
`round_id` INT NULL,
`season_id` INT NOT NULL,
`name` VARCHAR(255) NULL,
`link` VARCHAR(255) NULL,
PRIMARY KEY (`id`),
ENGINE = InnoDB;
最佳答案
仅选择具有灯具
中使用的最小回合ID的灯具(而不是回合
中的最小id
) code>,因为这可能不会在 fixtures
中使用!)。
SELECT *
FROM fixtures f
WHERE f.round_id = (SELECT min(ff.round_id)
FROM fixtures ff);
如果您还想要其中的回合数据(我无法判断您的查询中是否有联接,因为您想要回合数据,或者这只是由于您尝试过滤),您可以加入 rounds
.
SELECT *
FROM fixtures f
INNER JOIN rounds r
ON r.id = f.round_id
WHERE f.round_id = (SELECT min(ff.round_id)
FROM fixtures ff);
当然 min()
可以替换为其他合适的函数(例如 max()
),或者您可以想出一个完全不同的想法如何获得fixtures
中的一个 round_id
可供使用。重要的是,它必须是一个 ID,并且必须在 fixtures
中使用。
关于mysql - 如何在连接中获取单个记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775872/