mysql - 仅从多列中选择唯一记录

标签 mysql sql

我有一个按 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/

相关文章:

php - 如何使用 PHP MySQL 在 AJAX 脚本中获取数据库值

mysql - 用户组表架构

mysql - 左连接查询显示重复结果的问题

MySQL - SUM/COUNT 来自不同表的不同列

php - datetime 转换为 date only php

sql - 选择不同的返回零(globalize3)

sql - 在 Oracle 上选择字符串作为数字

c# - 通过 SQL 或 OLEDB 找出 Access 表的哪些列是自动递增的?

php - MySQL 偶尔会返回错误的值

php - SQL 结果应显示所有表一数据