我有一个名为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;
答案 0 :(得分:1)
仅选择具有fixtures
中使用的最小轮ID 的灯具(不是id
中的最小rounds
,因为这可能不会被使用在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()
),或者你可以提出一个完全不同的想法如何从{{{{}}获得一个round_id
1}}使用。重要的是,它必须是一个ID,并且必须在fixtures
中使用。
答案 1 :(得分:0)
如果您只想要一条记录并且您并不真正关心哪条记录,请将LIMIT 1附加到查询的末尾。
答案 2 :(得分:0)
尝试使用群组声明
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
GROUP BY r.round_id
答案 3 :(得分:0)
所以最终结果应该是:1,3或2
应用order by
子句将以这种方式获取结果:
Select id from fixtures f
where f.round_id
order by round_id asc;
只返回一轮的固定装置
为该where
子句赋予相等条件以获取单轮
示例:
Select id from fixtures f
where f.round_id = 11
order by round_id asc;
^返回' id'和第1行和第3行,它们与round_id 11相关联。