首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GROUP BY inverse (mysql)

GROUP BY inverse (mysql)
EN

Stack Overflow用户
提问于 2016-07-13 02:49:50
回答 5查看 1.4K关注 0票数 1

在mysql中,有没有办法得到group by语句的倒数呢?我的用例是删除所有重复项。

假设我的表是这样的:

代码语言:javascript
复制
ID | columnA | ...
1  |  A   
2  |  A
3  |  A
4  |  B
5  |  B
6  |  C

我希望我的结果集看起来像这样:

代码语言:javascript
复制
ID | columnA | ...
2  | A
3  | A
5  | B

(从本质上讲,这会找到所有的重复项,只留下一个。可用于将所有重复记录清除到1,或稍后执行其他分析)。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-07-13 02:53:39

一种方法是对ColumnA的每个值采用除第一个id之外的所有id

代码语言:javascript
复制
select t.*
from t
where t.id > (select min(t2.id) from t t2 where t2.columnA = t.columnA);
票数 0
EN

Stack Overflow用户

发布于 2016-07-13 02:54:01

这应该比基于内部select的查询执行得好得多。

代码语言:javascript
复制
SELECT
    *
FROM
     TABLE 
 QUALIFY
     RANK() OVER (partition by columnA order by ID ASC ) = 1 

编辑:这显然不适用于MySQL。我猜唯一的答案是通过oracle许可-或者使用另一种答案。;)

票数 0
EN

Stack Overflow用户

发布于 2016-07-13 02:57:18

你的结果似乎

代码语言:javascript
复制
 select max(id), columnA group by columnA
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38336748

复制
相关文章

相似问题

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