MySQL WHERE时间戳> = SUBDATE(MAX(时间戳),INTERVAL 5天)

时间:2009-06-23 06:48:49

标签: mysql date

在一个SQL查询中表达此内容的最佳方式是什么?

“选择一些属于表格中最新项目x天内的随机项目。”

我尝试了以下内容:

SELECT *
FROM table
HAVING `timestamp` >= SUBDATE(MAX(`timestamp`), INTERVAL 5 DAY)
ORDER BY RAND()
LIMIT 10

但这只会给我一个结果,而不是10. WHERE而不是HAVING因为使用了MAX()而没有削减它。

2 个答案:

答案 0 :(得分:3)

您可能希望在子查询中使用MAX语句:

SELECT *
FROM table
WHERE `timestamp` >= SUBDATE((SELECT MAX(`timestamp`) FROM table), INTERVAL 5 DAY)
ORDER BY RAND()
LIMIT 10

答案 1 :(得分:0)

SELECT *
FROM table
where `timestamp` >= (select SUBDATE(MAX(`timestamp`), INTERVAL 5 DAY) from table )
ORDER BY RAND()
LIMIT 10;