如何从具有唯一列的表中获取行,由另一列决定

问题描述 投票:0回答:2

很难解释,所以我制作了一个样本数据集:

CREATE TABLE sample_table (a_id INT, number INT, other_data VARCHAR(20));

INSERT INTO sample_table VALUES 
(1, 2, "other text"),
(1, 3, "other text 2"),
(1, 4, "other text 3"),
(2, 5, "other text 4"),
(2, 6, "other text 5"),
(3, 7, "other text 6"),
(4, 8, "other text 7"),
(4, 4, "other text 8");

SQL提琴数据-http://sqlfiddle.com/#!9/a73d69/2

我想做的是过滤表,以便a_id列中没有重复项。至于选择哪个特定行,我想要number最大的行。因此,在该示例表中,从顶部开始向下计数,将是第3、5、6和7行。

我已经尝试过“ GROUP BY”和“ DISTINCT”,但是到目前为止,没有任何东西可以100%正确地返回。

mysql sql select greatest-n-per-group
2个回答
1
投票

这是每组排名前n的问题。常见的解决方案是使用相关子查询进行过滤:


1
投票

这将只给您一个唯一的a_id和数字的结果,但是我添加GROUP_CONCAT可以看到一行以上的冷匹配项,以查看所有其他数据

© www.soinside.com 2019 - 2024. All rights reserved.