php - MySQL分组依据,但显示全部并按日期排序

标签 php mysql sql group-by

我有以下mysql表

ID (int)        parent_id (int)        title (str)     date (int - unix timestamp)
------------------------------------------------------------------------------------
252                 2                  Title 1         1378872876  (01. sept)
262                 2                  Title 2         1378870827  (02. sept)
273                 3                  Title 3         1378870800  (04. sept)
296                 3                  Title 4         1378869614  (05. sept)
301                 2                  Title 5         1378869384  (02. sept)
324                 4                  Title 6         1378868522  (02. sept)
339                 3                  Title 7         1378865096  (03. sept)
355                 3                  Title 8         1378864830  (02. sept)
365                 4                  Title 9         1378863323  (04. sept)
366                 4                  Title 10        1378863240  (02. sept)
376                 2                  Title 11        1378859731  (01. sept)
381                 5                  Title 12        1378858380  (03. sept)
388                 3                  Title 13        1378858080  (02. sept)
392                 4                  Title 14        1378857600  (04. sept)

我想要做的是选择所有按 unix 时间戳(仅一天)排序的行,但也按 parent_id 分组。因此,SQL 查询应返回以下内容:

ID (int)        parent_id (int)        title (str)     date (int - unix timestamp)
------------------------------------------------------------------------------------
296                 3                  Title 4         1378869614  (05. sept)
273                 3                  Title 3         1378870800  (04. sept)
339                 3                  Title 7         1378865096  (03. sept)
388                 3                  Title 13        1378858080  (02. sept)
355                 3                  Title 8         1378864830  (02. sept)
392                 4                  Title 14        1378857600  (04. sept)
365                 4                  Title 9         1378863323  (04. sept)
366                 4                  Title 10        1378863240  (02. sept)
324                 4                  Title 6         1378868522  (02. sept)
381                 5                  Title 12        1378858380  (03. sept)
262                 2                  Title 2         1378870827  (02. sept)
301                 2                  Title 5         1378869384  (02. sept)
252                 2                  Title 1         1378872876  (01. sept)
376                 2                  Title 11        1378859731  (01. sept)

我尝试了以下方法,但这并不是我想要的:

 SELECT 
         f.*, 
         FROM_UNIXTIME(f.post_date , '%d' ) AS day, 
         FROM_UNIXTIME(f.post_date , '%H' ) AS hour 
    FROM feeds f 
    WHERE f.parent_id IN (200,194,176,182,190,181,189,196,191) 
    GROUP BY f.parent_id 
    ORDER BY f.post_date DESC  
    LIMIT 0,100

这只能用 mysql 来完成还是我必须构建多个查询?

最佳答案

SELECT f.*
FROM feeds f
INNER JOIN (SELECT parent_id, MAX(post_date) AS Ordered GROUP BY parent_id) o
ON f.parent_id = o.parent_id
ORDER BY o.Ordered

关于php - MySQL分组依据,但显示全部并按日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18733510/

相关文章:

PHP debug_backtrace 位掩码用法

MySQL使用cases获取所有行的总和

mysql - Symfony2主义逆向工程问题

mysql - 计算行值的总数

php - 如何从显示的YouTube视频的链接中获取jQuery变量到PHP以发送到数据库?

php - Mysql语法限制为整数行

php - 从 jQuery 调用 AJAX 并显示等待消息

mysql - Django 中的外键约束错误

sql - 使用UML图解释SQL查询?

sql - 在 SQL Server 中为名字和姓氏的首字母创建触发器