首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在mysql查询中获得聚合字段的唯一值吗?对于另一个字段使用group。

问我可以在mysql查询中获得聚合字段的唯一值吗?对于另一个字段使用group。
EN

Stack Overflow用户
提问于 2020-02-13 16:25:26
回答 1查看 94关注 0票数 0

这是一张桌子

代码语言:javascript
复制
id | year
1   2020
2   2020
3   2020
1   2019
2   2019
3   2019

我试着按年分组,结果是

代码语言:javascript
复制
id | year
1   2020
1   2019

但我需要为id获取不同的值

预期:

代码语言:javascript
复制
id | year
1   2020
2   2019

(或)

代码语言:javascript
复制
id | year
1   2020
3   2019

我尝试使用这个mysql查询

select * from table group by year

EN

回答 1

Stack Overflow用户

发布于 2020-02-13 16:28:31

如果不使用分析函数,这可能会很棘手,但是如果您使用的是MySQL 8+,那么有一种方法:

代码语言:javascript
复制
WITH cte AS (
    SELECT id, year, DENSE_RANK() OVER (ORDER BY year) dr,
        ROW_NUMBER() OVER (PARTITION BY year ORDER BY id) rn
    FROM yourTable
)

SELECT id, year
FROM cte
WHERE dr = rn;

​

Demo

​

作为一个解释,下面是一个关于没有任何WHERE子句的完整CTE的查询:

​

​

请注意,每个年份记录块都有从1开始的dr编号,而在每个年份记录块中,rn列从1开始编号。我们保留行数和密集秩相同的行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60212462

复制
相关文章

相似问题

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