Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将第二行更新为最后一行?_Php_Mysql - Fatal编程技术网

Php 如何将第二行更新为最后一行?

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查询,则如下所示:

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>