Php 如何将第二行更新为最后一行?
我需要在给定一组条件的情况下更新表中倒数第二行。如果是SELECT查询,则如下所示:Php 如何将第二行更新为最后一行?,php,mysql,Php,Mysql,我需要在给定一组条件的情况下更新表中倒数第二行。如果是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
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不支持或操作的LIMIT子句中的偏移功能 但它是支持的声明 因此,要解决这个问题,您可以将偏移限制选择包装在一个联接的子选择中,然后只更新id和timestamp_col等于联接的id和timestamp_col的行,如下所示: 更新表\u 1 SET col\u 1=值\u按时间戳顺序\u col DESC LIMIT 1,1为什么出现错误?什么是错误?因为它应该有效。
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>