我有一个查询列出所有帖子:
SELECT *, DATE(FROM_UNIXTIME(`timestamp`)) `date`
FROM `posts`
ORDER BY `date` DESC
查询列出了所有行,我想只显示每个date
的最后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