【问题标题】:Order by amount of entries in MySQL按 MySQL 中的条目数量排序
【发布时间】:2010-12-11 08:19:28
【问题描述】:

我有一个像id, name, datetime 这样的表,它可能每天存储多个条目,现在我正在寻找一种方法来选择仅在一个查询中具有最高条目数量的日子。

到目前为止,我一直在循环遍历所有条目并将$highest 整数与每个值进行比较,但必须有一种更简单的方法来使用一个 sql 查询来完成。有什么想法吗?

更新

表格基本上是这样的

id、姓名、日期时间 1、测试,2010-12-01 12:12:12 2、测试2、2010-11-30 12:12:12 3、测试3、2010-11-30 13:13:13 4、test4,2010-10-29 12:12:12

结果需要为2010-11-30,因为该特定日期有两个条目,并且它实际上是“最高的一天”(或条目数量最多的一天)。

【问题讨论】:

  • 您现在的响应看起来是正确的。 “没有按预期工作”是什么意思?
  • 两个脚本都不返回条目数量最多的日期
  • 我用您的 4 个测试行创建了一个临时表,并根据现有答案运行查询,它们提供了您要求的结果 (2010-11-30)。
  • 是的,现在可以了,我需要相应地更新列名,我的错!

标签: php mysql


【解决方案1】:
SELECT id, name, DATE(`datetime`) AS `date`, COUNT(*) AS `count`
FROM things
GROUP BY `date`
ORDER BY `count` DESC

如果您只想要最高的一天,请在末尾添加LIMIT 1

请记住,idname 将来自当天的随机记录。如果您想要该特定日期的所有记录,则需要运行另一个查询或使用子查询。

【讨论】:

  • 不幸的是,这并没有像希望的那样工作,我的问题可能具有误导性,我相应地更新了它。
  • 此查询返回:| 2 | test2 | 2010-11-30 | 2 |,这是对应于条目最多的日期的行。这就是你要求的。
【解决方案2】:

试试这个:

SELECT DATE(`datetime`) AS `date`
FROM your_table
GROUP BY `date`
ORDER BY COUNT(*) DESC
LIMIT 1

【讨论】:

  • 不幸的是,这并没有像希望的那样工作,我的问题可能具有误导性,我相应地更新了它。
  • 此查询返回| 2010-11-30 |,这是条目最多的日期。这就是你要求的。
  • 现在像魅力一样工作,我的错误,我还在date 列中使用了datetime 标签,但没有成功。
猜你喜欢
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
相关资源
最近更新 更多