将查询结果限制为每组两行

时间:2011-05-11 22:42:51

标签: mysql sql

我有一个查询列出所有帖子:

SELECT *, DATE(FROM_UNIXTIME(`timestamp`)) `date` 
FROM `posts`
ORDER BY `date` DESC

查询列出了所有行,我想只显示每个date的最后2个帖子,我该怎么做?

2 个答案:

答案 0 :(得分:4)

这可能有用,但我不能说它的表现......

SELECT DATE(FROM_UNIXTIME(MyTimestamp)) AS ForDate, *
FROM   MyPostsTable
WHERE  2 >=
(
    SELECT COUNT(*)
    FROM   MyPostsTable AS lookup
    WHERE  DATE(FROM_UNIXTIME(lookup.MyTimestamp)) = DATE(FROM_UNIXTIME(MyPostsTable.MyTimestamp))
    AND    lookup.MyTimeStamp >= MyPostsTable.MyTimestamp
)

答案 1 :(得分:0)

我正在为您的世界调整sql server / oracle解决方案。其他列将是表的ID,然后您可以在相关子查询中使用它来获取其余列。让我知道它是否适用于下次我使用MySQL

select l.DATE(FROM_UNIXTIME(`timestamp`)), l.`otherColumn`, count(*) as num
from `posts` as l
left outer join fruits as r
    on l.DATE(FROM_UNIXTIME(`timestamp`)) = r.DATE(FROM_UNIXTIME(`timestamp`))        
       and l.`otherColumn` >= r.`otherColumn`
group by l.DATE(FROM_UNIXTIME(`timestamp`)), l.`otherColumn`
having count(*) <= 2