2010-09-20 4 views
1

У меня есть установки, как это:Поиск альтернативных учетных записей, SQL

Username | IP 
Foo  | 1.2.3.4 
Bar  | 1.2.3.4 
Baz  | 1.2.3.6 

, я хочу, чтобы найти альтернативные счета пользователя «Foo». Что-то вроде этого должно возвратить:

Username | IP 
Bar  | 1.2.3.4 

Как я могу сделать такое в одном SQL-запросе?

ответ

2

Самостоятельно присоединиться должны сделать трюк

это даст вам все пользователи, которые имеют более чем один

Select * from 
Table t1 
INNER JOIN Table t2 
ON t1.ip = t2.ip 
and t1.Username <> t2.Username 

вы можете настроить, где, как вы хотели бы

например

Where 
t1.UserName = 'Foo' 
1
SELECT * FROM TableName 
LEFT JOIN TableName AS TableName2 
ON TableName2.IP = TableName.IP AND TableName2.Username != TableName.Username 
WHERE TableName.Username = 'Foo' 
+0

я печатал этот же код, когда оба ответа получил отправил ... –

+0

SELECT * FROM Пользователи LEFT JOIN Пользователи AS потребляющие2 ON Users2.ip = Users.ip И Users2.user! = Users.user WHERE Users.user = "Foo" // Не совсем работает, что я делаю неправильно? – Q2Ftb3k

+0

Используйте сингл = вместо двойного в конце. Я обновил свой ответ. – JamesMLV

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