按mysql中字段中的最高记录数排序
我想从MySQL数据库中对一个表的内容进行排序,如下所示按mysql中字段中的最高记录数排序,mysql,sql,select,sql-order-by,Mysql,Sql,Select,Sql Order By,我想从MySQL数据库中对一个表的内容进行排序,如下所示 name,h1,h2 a,f1,3 a,g3,5 a,h3,4 b,g3,4 c,h5,2 c,j12,6 我想获取名称列中每个元素的长度,即“a”的长度为3(因为它有三行与之相关联的数据),并获取前2个元素的数据(这里它包括3行表示a的数据,2行表示c的数据,因为它们按降序排列的长度最高)。因此,所需的输出如下所示 name,h1,h2 a,f1,3 a,g3,5 a,h3,4 c,h5,2 c,j12,6 在MySQL中如何实现这
name,h1,h2
a,f1,3
a,g3,5
a,h3,4
b,g3,4
c,h5,2
c,j12,6
我想获取名称列中每个元素的长度,即“a”的长度为3(因为它有三行与之相关联的数据),并获取前2个元素的数据(这里它包括3行表示a的数据,2行表示c的数据,因为它们按降序排列的长度最高)。因此,所需的输出如下所示
name,h1,h2
a,f1,3
a,g3,5
a,h3,4
c,h5,2
c,j12,6
在MySQL中如何实现这一点?加入前两个记录的计数应该会给出结果
select
t.*
from
table1 t
inner join (select
name,
count(*) as cnt
from table1
group by name
order by count(*) desc
limit 2) as c on t.name = c.name
order by c.cnt desc
这里是一个“a”的长度应该是2(因为它有三行相关数据)“2的长度与3的关系如何?我发现很难理解您的示例,因为您的输出缺少原始记录,我们讨论的只是排序。很抱歉,这是一个错误。我后来编辑了,在a中添加了一个额外的行@dasblinkenlight@paqogomez我需要排序并选择顶部记录(这将排除“b”行)。我希望我有意义。好的,那么“顶部记录”的定义是什么?@abn注意,我在最终订单上添加了描述,并添加了一个工作小提琴示例。