2016-11-08 2 views
0

У меня есть таблица вида:Выберите все записи, где ID появляется один раз SQL

User1 A 
User2 A 
User2 B 
User3 C 
User4 A 
User4 C 
User5 D 

и из-за этого мне нужно выбрать только для тех пользователей, которые появляются сразу. Так, например, из вышеизложенного я хочу User1, User3, User5. Я мог бы использовать что-то вроде row_number() для удаления дубликатов, однако это вернет одну строку для всех пользователей, даже тех, у кого более 1 записи, чего я не хочу. Я не могу использовать DISTINCT, так как, например, User2 A и User2 B не были пойманы, поскольку они не равны.

+0

Я не знаю, почему ты укажите 'row_number()'. MySQL не поддерживает эту функцию. –

ответ

1

Использование GROUP BY:

select username 
from t 
group by username 
having count(*) = 1; 

Если вы знаете, что нет дубликатов во втором столбце, а затем с правильными индексами следующее может быть быстрее:

select t.* 
from t 
where not exists (select 1 from t t2 where t2.username = t.username and t2.col2 <> t.col2); 
Смежные вопросы