2011-03-06 35 views
0

如果我想選擇明確的用戶(即WHERE用戶名='彼得')SQL SELECT查詢應該如何看起來GROUP)所有行BY ip並選擇所有其他用戶具有相同的IP?SQL選擇用戶按ip分組,並選擇所有其他用戶在一個表中相同ips

這是帶有字段的表格內容:id,ip,用戶名

1 | 192.0.0.1 |彼得
2 | 192.0.0.1 | jack
3 | 192.0.0.2 |彼得
4 | 192.0.0.3 | justin
5 | 192.0.0.2 |賈斯汀

執行必要的SQL SELECT查詢應該這樣選擇(與其中username = '彼得'):

2 | 192.0.0.1 | jack
5 | 192.0.0.2 | justin

這是SELECT查詢,它選擇了與目標用戶名'peter'具有相同IP的用戶名行。

任何人都可以幫助我嗎?

預先感謝您!

回答

2
SELECT * 
FROM your_table 
WHERE ip_address IN (SELECT ip_address 
        FROM your_table 
        WHERE user_name = 'peter') 
    AND user_name <> 'peter' 
+0

+1:關於'user_name <>'peter''的好聲音:) – 2011-03-06 14:17:16

2
 
SELECT * 
FROM your_table 
WHERE ip_address IN (SELECT ip_address 
        FROM your_table 
        WHERE user_name = 'peter'); 
+0

差不多。你需要添加另一個過濾器來刪除'peter'自己的匹配。 – tdammers 2011-03-06 14:16:44

+0

@tdammers:非常真實,只是鍵入快速... – 2011-03-06 14:17:53

+0

@a_horse_with_no_name嘗試此SELECT用戶從入口WHERE IP IN(SELECT ip FROM入口WHERE user ='peter')和用戶<>'peter'SQL查詢需要在表格內共執行2850行約30秒。有時它只是掛起...((( – ilnur777 2011-03-06 15:34:40

0
SELECT t1.* 
FROM iptable t1 
    INNER JOIN iptable t2 ON t1.ip = t2.ip AND t1.username <> t2.username 
WHERE t2.username = 'peter' 
相關問題