2012-02-02 3 views
2

У меня есть следующая таблица, в которой, если более 1 строки содержат одинаковые «user_badge_name» и «user_email», они считаются дублирующими.Получение дубликатов в таблице и их отображение

user_id | user_name | user_badge_name | user_email 
-------------------------------------------------- 
234  | Kylie  | ky001   | [email protected] 
235  | Francois | FR007   | [email protected] 
236  | Maria  | MA300   | [email protected] 
237  | Francine | FR007   | [email protected] 

Мне нужно, чтобы отобразить user_ids и имя тех строк, где реплицируются «user_badge_name» и «user_email».

Я попытался следующий SQL, но не возвращает все user_ids, только первый идентификатор

SELECT user_id, username , COUNT(user_badge_name) AS user_badge_name_Count FROM user GROUP BY user_badge_name HAVING user_badge_name_Count > 1 

Любое предложение наиболее ценится

+0

Если цель состоит в том, чтобы предотвратить дублирование записей, почему структура таблиц позволяет им? Если вы объявляете 'user_email' и' user_badge_name' как UNIQUE, тогда у вас никогда не будет проблем с дубликатами в этих столбцах. –

+0

Я использую существующую таблицу, которая уже содержит дубликаты. Мне просто нужно было отобразить эти дубликаты – Kim

ответ

3
select a.user_id, a.user_name 
from user as a 
inner join 
(SELECT user_badge_name, user_email 
FROM user 
GROUP BY user_badge_name, user_email 
HAVING count(*)>1 
) as dups 
on a.user_badge_name=dups.user_badge_name and a.user_email=dups.user_email 
order by a.user_badge_name, a.user_email 
1

Если вы хотите, чтобы увидеть все идентификаторы пользователей в том же ряд, то вы можете использовали GROUP_CONCAT:

SELECT GROUP_CONCAT(user_id) AS user_ids, GROUP_CONCAT(username) AS usernames, COUNT(user_badge_name) AS user_badge_name_Count FROM user GROUP BY user_badge_name HAVING user_badge_name_Count > 1 

это даст вам что-то вроде этого:

user_ids | usernames   | user_badge_name_Count 
----------------------------------------------- 
235,237 | Francois,Francine | 2 
+0

Спасибо за предложение GROUP_CONCAT – Kim

Смежные вопросы