我有一个按 IP、版本和平台记录下载的表。手动查看表格,我发现有很多重复项,其中所有 3 个值都是相同的。 (用户可能只是不耐烦)我想使用一个 SELECT 语句来过滤掉重复项,并且如果所有 3 个值都相同,则仅返回其中一个条目。更高级的是,如果可能的话,我还有一个使用 CURRENT_TIMESTAMP 的日期/时间字段。如果我可以包含来自不同日期但不是不同时间的重复项,那就太好了。这样我就可以查看同一用户是否在不同的一天再次下载。
我主要只是想统计每天有多少独特的人下载每个版本。 DB表的结构很简单...
key (AUTO_INCRMENT)、日期 (CURRENT_TIMESTAMP)、IP、user_agent、平台、版本
该软件有 Windows 和 Mac 版本(平台),我提供当前版本和重大更改之前的几个不同的过去版本。
最佳答案
只需按您想要排除重复的字段进行分组,例如
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)
这样就可以相对容易地对按天分组的结果进行一些更高级的过滤等。
关于mysql - 仅从多列中选择唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55578920/