2015-08-21 2 views
2

Допустим, моя таблица выглядит следующим образом:Нахождение пар уникального столбца

1. user 1.2.3.4 
2. user 1.2.3.4 
3. user 2.3.4.5 
4. user 2.3.4.5 
5. user 1.2.3.5 
6. anotheruser 1.2.3.6 
7. anotheruser 1.2.3.4 

Я хочу, чтобы получить список всех изобр с именами пользователей. Запрос может выглядеть следующим образом:

select username, ip from client_logs where ip is unique 

Я хочу вывода, как это:

user 1.2.3.4 
user 2.3.4.5 
user 1.2.3.5 
anotheruser 1.2.3.6 
anotheruser 1.2.3.4 

Я уже пытался это сделать, выберите отчетливый, но у меня есть только IP-адреса или IP - пользователь. Запрос Я попытался это:

SELECT DISTINCT ip, username 
FROM client_logs 
ORDER BY username 
+0

вы можете показать, что запрос, который вы пробовали? –

+1

вы можете использовать либо 'select distinct ...', либо вы можете группировать: 'select user, ip из группы client_logs пользователем, ip'. – Andrew

ответ

3

USE GROUP BY

SQL Fiddle Demo

SELECT username, ip 
FROM client_logs 
GROUP BY username, ip 
ORDER BY username, ip 

Редактировать

Я также попробовать свои первые решения и работает

Only distinct DEMO

SELECT distinct username, ip 
FROM client_logs 
ORDER BY username, ip 
+0

В вашем запросе отображаются только те, кто зарегистрировался один раз –

+1

@encoreleet Я редактирую свой ответ, ваш запрос не работает для данных, которые вы поддерживаете. проверьте это [** Fiddle **] (http://sqlfiddle.com/#!9/90e4d/4) –

+0

@encoreleet Я стараюсь, чтобы ваш sql отличался и работал. Зачем вам решать этот вопрос? –

-2

Я решил его следующий запрос:

SELECT username, ip 
FROM client_logs 
GROUP BY ip 
ORDER BY username, ip 
+0

Это отображает только одну строку на каждый IP-адрес. Вы уверены, что это то, что вы хотите? Что делать, если несколько пользователей вошли в систему с одного и того же IP-адреса? Этот запрос не даст ожидаемых результатов, о которых вы сказали в своем вопросе. – AdamMc331

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