2011-05-26 32 views
1

我試圖選擇具有最高的20「時間戳」值的行,並從這些20行1列具有最低ID值:試圖選擇具有最高時間戳值和最低ID值的20個項目?

$result_last = mysql_query("SELECT * FROM (SELECT * FROM Events ORDER BY TimeStamp DESC LIMIT 20) ORDER BY ID ASC LIMIT 1"); 

上面的查詢不工作,但它是有道理對我來說。這個查詢有什麼問題嗎?

+0

你是什麼意思它不工作。它會返回一個錯誤嗎?它會返回錯誤的數據嗎? – andrewmitchell 2011-05-26 07:57:09

回答

2

錯誤是#1248 - Every derived table must have its own alias這的確如此。這應該工作:

$result_last = mysql_query("SELECT * FROM (SELECT * FROM Events ORDER BY TimeStamp DESC LIMIT 20) AS T ORDER BY ID ASC LIMIT 1"); 
+0

太好了。感謝您的幫助!你釘了那個錯誤。我會接受它什麼時候讓我 – TaylorMac 2011-05-26 08:07:39

-2

嘗試這樣:

$result_last = mysql_query("SELECT * FROM Events WHERE TimeStamp IN(SELECT TimeStamp FROM Events ORDER BY TimeStamp DESC LIMIT 10") ORDER BY TimeStamp ASC LIMIT 1); 
+0

我不認爲mySQL支持IN? – TaylorMac 2011-05-26 08:08:17

+1

@TaylorMac是的,它支持 – Chumillas 2011-05-26 08:10:18

+0

我很確定它也支持語法錯誤 – Dormouse 2011-05-26 08:11:04