php - 计算/检查 mysql 表中条目的第一个实例

标签 php mysql

  id          | user_id        |      date_tracked
---------------------------------------------
 1001         |  1             | 10-10-2013
 1002         |  2             | 10-10-2013
 1003         |  3             | 10-10-2013
 1004         |  1             | 10-11-2013
 1005         |  2             | 10-12-2013

我有一个与此类似的表,用于跟踪用户和日期。我需要查找在选定日期发生的用户首次输入次数。该表将包含大量数据,这就是为什么我想依靠查询来处理它而不是一堆 PHP 循环。

即2013 年 11 月 10 日,用户 1 访问但不是第一次访问,因此返回 0 2013 年 10 月 10 日,用户 1 和 2 第一次访问,返回 2。

显然,使用简单的查询可以计算指定日期的条目数,但是如果 user_id 不在之前的行中,哪种方法允许我只计算。

该表按日期排序,这意味着较新日期的 ID 永远不应小于较旧日期。

有什么想法吗?谢谢!

最佳答案

按用户查找所有“第一次”日期:

SELECT user_id, MIN(date_tracked) AS first_date
FROM table
GROUP BY user_id

计算每个日期的“第一次”:

SELECT t.first_date, COUNT(*) AS nb
FROM (SELECT user_id, MIN(date_tracked) AS first_date
FROM table
GROUP BY user_id) t
GROUP BY t.first_date

关于php - 计算/检查 mysql 表中条目的第一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19572614/

相关文章:

php - 将 JSON 数据从 Javascript 发送到 PHP?

javascript - 如何允许仅选择一个动态生成的单选框?

phpmyadmin 错误 : cant create table error number 150

php - 无效使用组函数的初学者 MySQL 问题

javascript - Angular 文件上传 formData

php - 如何修复 : The difference between the request time and the current time is too large

mysql查询跟踪

mysql - 按月对两个mysql表进行计算

php - 表单不向mysql表插入信息?

mysql - 选择仍然可用的职位