MySQL根据另一列的值按列分组

时间:2013-08-02 18:26:01

标签: mysql

我想知道如何实现这样的查询。比方说,我有下表跟踪来自不同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等分组。

希望这听起来并不太令人困惑。

2 个答案:

答案 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也可以使用

不需要小组