首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql -在一个字段上获取按另一个字段排序的不同值

Mysql -在一个字段上获取按另一个字段排序的不同值
EN

Stack Overflow用户
提问于 2017-09-28 01:00:39
回答 2查看 23关注 0票数 0

我们假设给定的MYSQL表结构

代码语言:javascript
复制
+----+-------+-------+
| id | group | count |
+----+-------+-------+
|  1 | cat   |    11 |
|  2 | cat   |    12 |
|  3 | dog   |     4 |
|  4 | dog   |     6 |
|  5 | cow   |    16 |
|  6 | cow   |    12 |
+----+-------+-------+

我想做的是:每个动物组取一只动物,按计数字段升序排列。在上面的示例中,输出应该是:

代码语言:javascript
复制
|  1 | cat   |    11 |
|  3 | dog   |     4 |
|  6 | cow   |    12 |

但它比看起来复杂得多。获得这些结果的最优化的查询是什么?(当然,为每个组创建子查询不是一个选项)

EN

回答 2

Stack Overflow用户

发布于 2017-09-28 01:07:00

根据手册..。

代码语言:javascript
复制
SELECT x.*
  FROM my_table x
  JOIN 
     ( SELECT `group`, MIN(count) count FROM my_table GROUP BY `group`) y
    ON y.group = x.group
   AND y.count = x.count;
票数 2
EN

Stack Overflow用户

发布于 2017-09-28 01:02:45

MySQL 8.0+中,您可以使用ROW_NUMBER()

代码语言:javascript
复制
SELECT *
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY `group` ORDER BY `count`) AS rn
     FROM table_name) sub
WHERE rn = 1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46453431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档