我有一個查詢,列出所有帖子兩行:限制查詢結果以每
SELECT *, DATE(FROM_UNIXTIME(`timestamp`)) `date`
FROM `posts`
ORDER BY `date` DESC
查詢列表中的所有行,我想只顯示最後2個職位每個date
,我怎麼能做到這一點?
我有一個查詢,列出所有帖子兩行:限制查詢結果以每
SELECT *, DATE(FROM_UNIXTIME(`timestamp`)) `date`
FROM `posts`
ORDER BY `date` DESC
查詢列表中的所有行,我想只顯示最後2個職位每個date
,我怎麼能做到這一點?
這可能會實現,但我不能說太多關於它的性能...
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
)
謝謝,我測試了它,但它又返回所有行的列表:( – 2011-05-11 22:56:04
有錯字,你可能會發現它每天排除一行。 <='已改爲'2> =' – MatBailie 2011-05-11 23:08:10
謝謝,現在我的問題解決了!謝謝 – 2011-05-11 23:11:11
我適應一個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
看起來和我的答案一樣,但表達方式不同,所以看起來應該起作用。儘管如此,或者他們甚至給出了相同的執行計劃。 – MatBailie 2011-05-12 08:49:42
您是否正在按日期對結果進行分組?你的問題不是很清楚 - 你能澄清嗎? 「在每個日期後顯示示例2」是什麼意思? – MikeMurko 2011-05-11 22:45:20
不,用給定的查詢,如果我在2011-05-11有10個帖子,他們都列出結果,但我只想要2個帖子顯示結果 – 2011-05-11 22:47:21
你想要顯示哪兩個日期? – soandos 2011-05-11 22:47:47