2009-06-23 131 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;