2012-07-16 71 views
1

我需要更新表中倒數第二行給定一組條件。如果這是一個SELECT查詢它應該是這樣的:如何更新倒數第二行?

SELECT col_1 FROM table_1 WHERE id = id_# ORDER BY timestamp_col DESC LIMIT 1,1 

不過,我得到當我做下面的一個錯誤,但它是我想要的行爲:我知道我可以

UPDATE table_1 SET col_1 = value_# ORDER BY timestamp_col DESC LIMIT 1,1 

寫這個

UPDATE table_1 SET col_1 = value_# ORDER BY timestamp_col DESC LIMIT 1 

但我不知道如何得到倒數第二行給定的條件集。

什麼是更新倒數第二行的正確查詢?

+1

'UPDATE table_1 SET col_1 = value_#ORDER BY timestamp_col DESC LIMIT 1,1'爲什麼這裏是錯誤?什麼是錯誤?因爲它應該工作。 – 2012-07-16 18:46:03

+0

你可以做一個子選擇嗎? – ametren 2012-07-16 18:46:46

回答

2

MySQL不支持UPDATEDELETE操作的LIMIT子句中的「偏移」功能。

支持SELECT語句。

所以,你能做些什麼來解決這個問題是包裹偏移LIMIT選擇在加入子查詢,然後更新只排在idtimestamp_col等於加入idtimestamp_col像這樣:

UPDATE table_1 a 
INNER JOIN 
(
    SELECT id, timestamp_col 
    FROM table_1 
    WHERE id = <id> 
    ORDER BY timestamp_col DESC 
    LIMIT 1,1 
) b ON a.id = b.id AND a.timestamp_col = b.timestamp_col 
SET a.col_1 = <value> 
+0

它的工作!非常感謝! – lrpr 2012-07-16 19:14:00