2009-06-23 93 views
1

在一个SQL查询中表达这种情况的最佳方式是什么? “MySQL WHERE timestamp> = SUBDATE(MAX(timestamp),INTERVAL 5 DAY)

”选择表格中最新项目x天内的几个随机项目。“

我试过如下:

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

但这只是给了我一个结果,而不是10 WHERE,而不是HAVING不剪,因为使用的MAX()的。

回答

3

你可能想在一个子查询您的MAX声明:

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

D'哦,这么明显。我希望没有需要为我的DAO子查询的东西,但有点小把戏它工作正常。 谢谢。 – deceze 2009-06-23 06:59:58

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