首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql(ite) -对同一表中的数据进行分组

sql(ite) -对同一表中的数据进行分组
EN

Stack Overflow用户
提问于 2015-04-09 14:17:54
回答 1查看 88关注 0票数 0

我在一个名为UniqueCrash的表中有一些数据,它有一个哈希值,还有一个issue_id (它是一个外部bug跟踪器ID)。

我想要找到的是一个UniqueCrash行的列表,其中相同的哈希值(因为它是调用堆栈的散列)分配给了多个bug跟踪器ID (因为它意味着一个重复的bug已经被记录)。

我的测试数据看起来如下(ID、散列、发出ID):

代码语言:javascript
复制
1 | 12345 | Bug 1
2 | 12345 | Bug 2
3 | 12345 | Bug 3
4 | 123456 | Bug 4

我希望我的结果是这样的:

代码语言:javascript
复制
1 | 12345 | Bug 1
2 | 12345 | Bug 2
3 | 12345 | Bug 3

(即只删除最后一个条目-该散列只使用一次)

我真的不知道这种技术叫什么,如果真的有名字的话。到目前为止,我有一个查询似乎提供了几乎正确的数据:

代码语言:javascript
复制
SELECT UniqueCrash.id, hash, issue_id 
FROM UniqueCrash
WHERE hash IN 
    ( SELECT hash FROM 
    ( SELECT UniqueCrash.id, hash, issue_id 
        FROM UniqueCrash WHERE
            UniqueCrash.issue_id IS NOT NULL
        GROUP BY hash, issue_id ) 
    GROUP BY hash HAVING COUNT(issue_id) > 1 )
ORDER BY hash ASC, id ASC

但是,虽然它给出了正确的3行(按ID)返回,但看起来第1行和第2行的问题ID是错误的,我不明白为什么。

有人能建议一种更好的方法来重写这个查询(以及一个真正有效的查询)吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-09 16:48:30

只需使用COUNT DISTINCT即可:

代码语言:javascript
复制
SELECT `id`, `hash`, `issue_id` 
FROM UniqueCrash 
WHERE `hash` IN (
             SELECT `hash` from UniqueCrash
             GROUP BY `hash`
             HAVING COUNT(DISTINCT `issue_id`) > 1)
ORDER BY `hash` ASC, `id`  ASC

请参阅DEMO HERE

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

https://stackoverflow.com/questions/29541086

复制
相关文章

相似问题

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