php - Mysql通过取错时间戳查询分组

标签 php mysql sql greatest-n-per-group

我有一个查询,执行时会给出这样的结果

speciaid         | title     | date
one              | xxx       | 2013-10-03 02:13:54
one              | xxx       | 2013-10-03 03:13:54
two              | yyy       | 2013-10-02 02:13:54

现在,如果我添加GROUP BYspecialid,它会被分组,但我得到的日期是旧日期,而不是像这样的“日期”列的新日期

speciaid         | title     | date
one              | xxx       | 2013-10-03 02:13:54      // old date selected for entry one
two              | yyy       | 2013-10-02 02:13:54

我想要这样

speciaid         | title     | date
one              | xxx       | 2013-10-03 03:13:54   // new date for entry one needed
two              | yyy       | 2013-10-02 02:13:54

我尝试了很多分组依据 - 我得到了相同的结果。如果有人帮助进行 group by 查询语句,我将非常感激。

最佳答案

您正在寻找每组最佳的解决方案。

通常以这种方式解决(假设您的结果是表格,因为问题中缺乏信息)。

选项 1:

SELECT * FROM t JOIN (
  SELECT title, max(`date`) `date` FROM t
  GROUP BY title
) s ON t.title = s.title AND t.`date` = s.`date`

选项 2:

SELECT t1.* FROM t t1
LEFT JOIN t t2
ON t1.title = t2.title AND t1.`date` < t2.`date`
WHERE t2.`date` IS NULL

工作 fiddle :http://sqlfiddle.com/#!2/76f2d3/1

关于php - Mysql通过取错时间戳查询分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19173674/

相关文章:

php - GitHub API 提交

mysql - SQL 设置 ORDER BY

mysql - 如何使用比较规则连接表

MySql 是否根据先前的值递增

CodeIgniter - 在非对象上调用成员函数 model()

javascript - JS/PHP/ZendFramework - 当我用 php 和 ajax 单击按钮时更新我的​​数据表

php - 在elfinder中映射文件夹内的驱动器

mysql - 自连接中的内连接 - MySql

sql - 将日期格式化为星期几

sql - 将多个数据库合并为一个数据库