2010-09-20 88 views
1

我有这样的设置:寻找替代账户,SQL

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

说我要找到用户“富”的替代账户。这样的事情应该返回:

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

我打字相同的代码时,都得到了答案贴... – 2010-09-20 21:43:48

+0

SELECT * FROM用户LEFT JOIN用户以Users2 ON Users2.ip = Users.ip AND Users2.user!= Users.user WHERE Users.user =“Foo”//工作不正常,我做错了什么? – Q2Ftb3k 2010-09-20 21:49:04

+0

最后使用单个=而不是双倍。我更新了我的答案。 – JamesMLV 2010-09-20 21:58:30