首页 > 解决方案 > 仅从多列中选择唯一记录

问题描述

我有一个按 IP、版本和平台记录下载的表格。手动查看表格,我看到很多重复项,其中所有 3 个值都相同。(用户可能只是不耐烦)我想使用 SELECT 语句过滤掉重复项,如果所有 3 个值都相同,则只返回其中一个条目。更高级,如果可能的话,我还有一个使用 CURRENT_TIMESTAMP 的日期/时间字段。如果我可以包含来自不同日期但不是不同时间的重复项,那就太好了。因此,我可以查看同一用户是否在另一天再次下载。

我主要只是想统计每天有多少独特的人下载每个版本。DB表的结构很简单...

键(AUTO_INCREMENT)、日期(CURRENT_TIMESTAMP)、ip、user_agent、平台、版本

该软件有 Windows 和 Mac 版本(平台),我提供当前版本和几个不同的过去版本,这些版本在重大更改之前。

标签: mysqlsql

解决方案


只需按您要排除重复的字段进行分组,例如

SELECT ip, platform, version, COUNT(*) AS number_of_tries, max(download_date) AS last_download_date 
FROM downloads
GROUP BY ip, platform, version, DATE(download_date)

然后,对按天分组的结果进行一些更高级的过滤会相对容易,等等。


推荐阅读