У меня есть некоторые данные в таблице UniqueCrash, которая имеет значение хеша, и issue_id (это внешний идентификатор отслеживания ошибок).sql (ite) - группировка данных в одной таблице
Я хочу найти список строк UniqueCrash, где одно и то же значение хэша - поскольку это хэш стека вызовов - было назначено более чем одному идентификатору отслеживания ошибок (поскольку это означает, что дубликат ошибки был зарегистрирован).
Мой тест данных выглядит следующим образом (ID, хэш, ID Issue):
1 | 12345 | Bug 1
2 | 12345 | Bug 2
3 | 12345 | Bug 3
4 | 123456 | Bug 4
И я хочу, чтобы мой результат, чтобы выглядеть следующим образом:
1 | 12345 | Bug 1
2 | 12345 | Bug 2
3 | 12345 | Bug 3
(т.е. просто удалить последнюю запись - этот хэш используется только один раз)
Я действительно не знаю, как называется этот метод, если действительно есть имя для него. До сих пор у меня есть запрос, который, кажется, дают почти правильные данные обратно:
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 вращаются вокруг, и я не понимаю, почему.
Может ли кто-нибудь предложить лучший способ переписать этот запрос (и тот, который действительно работает)?