我想知道如何实现这样的查询。比方说,我有下表跟踪来自不同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
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列中删除重复项。是否可以将所有Link 1 IP,Link 2,IP,Link 3 IP等分组。
希望这听起来并不太令人困惑。
答案 0 :(得分: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;
其中id
位于select
列表中,但不在group by
中。虽然允许,但我认为这是一个普遍的坏习惯(有一些情况下这个功能很有用)。
答案 1 :(得分:0)
select distinct
也可以使用
不需要小组