如何在连接中获取单个记录?

4dc9hkyq  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(308)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

两年前关门了。
改进这个问题
我有一张table叫 fixtures 包含以下结构:

id | comp_id  | round_id | 
 1     10         11          
 2     10         12         
 3     10         11

我只想得到一个“round\u 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;
5n0oy7gb

5n0oy7gb1#

仅选择具有中使用的最小圆id的装置 fixtures (不是最小值) idrounds ,因为这可能不用于 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_idfixtures 使用。重要的是,它必须正好是一个id,并且必须在 fixtures .

3gtaxfhh

3gtaxfhh2#

尝试使用组语句

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
uelo1irk

uelo1irk3#

如果您只需要一条记录,而不在乎是哪条记录,请在查询的末尾附加limit1。

bq3bfh9z

bq3bfh9z4#

所以最终结果应该是: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行,它们与第11个id相关。

相关问题