在给定一组条件的情况下,我需要更新表中倒数第二行。如果它是一个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
但在给定条件的情况下,我不知道如何更新倒数第二行。
更新倒数第二行的正确查询是什么?
MySQL不支持UPDATE或DELETE操作的LIMIT
子句中的"偏移量"功能。
但是对于SELECT语句是受支持的。
因此,您可以做的是将偏移LIMIT
选择包裹在连接的子选择中,然后只更新id
和timestamp_col
等于连接的id
和timestamp_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>