2013-08-02 81 views
0

我想知道如何實現這樣的查詢。例如說我有以下表跟蹤對鏈接的點擊來自不同的IP地址來:MySQL組由一列取決於另一列的值

id  link  ip 
1  Link 1  100.100.1.1 
2  Link 1  100.100.1.2 
3  Link 2  100.100.1.3 
4  Link 1  100.100.1.1 
5  Link 3  100.100.1.4 
6  Link 3  100.100.1.1 

我想要做的就是讓所有的獨立IP點擊相同的鏈接,這樣的結果應該是這樣的:

id  link  ip 
1  Link 1  100.100.1.1 
2  Link 1  100.100.1.2 
3  Link 2  100.100.1.3 
5  Link 3  100.100.1.4 
6  Link 3  100.100.1.1 

我想我應該組表,但這樣做會刪除鏈接或IP列的重複。是否有可能只是將所有鏈路1 IP,鏈路2,IP,鏈路3 IP等組合起來?

希望這聽起來不太令人困惑。

回答

1

可以使用group by做到這一點:

select min(id) as id, link, ip 
from t 
group by link, ip; 

在MySQL中,你可以使用此語法:

select id, link, ip 
from t 
group by link, ip; 

其中idselect列表中,但不是在group by。儘管允許,但我認爲這是一個普遍進入的壞習慣(有些情況下這個功能很有用)。

+0

謝謝你,這確實讓我我需要什麼。現在,我忘了在我的原始問題中包含後續內容。如果我有另一個INT列存儲記錄點擊/行時的時間戳,我該如何將某個鏈接下的IP分組,如同1小時之間記錄的那樣?我想放棄在指定的時間內完成的重複的ip點擊,但如果點擊是在那之後做出的(例如一小時之後),則再次對它們進行計數。 – georaldc

+0

@georaldc。 。 。這是一個非常不同的問題。我建議你問這是另一個問題。 –

+0

有道理。在我開啓一個新問題之前,我會努力讓它工作。再次感謝! – georaldc

0

select distinct也將工作,如果你只是想查看列

無需組

相關問題