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

但我无法弄清楚如何在给定条件集的情况下更新倒数第二行。

更新倒数第二行的正确查询是什么?

4

1 回答 1

2

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

但它支持SELECT语句

所以你可以做些什么来解决这个问题,将偏移LIMIT选择包装在一个连接的子选择中,然后只更新idandtimestamp_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>
于 2012-07-16T18:52:21.567 回答