PHP中的Mysql - 如何仅更新表中的一行,但ID号最大

2022-08-30 20:14:21

我正在尝试更新数据库中的字段,但遇到了一个如此简单的问题:我只想更新表中具有最大ID号的一行。我会做这样的事情:

UPDATE table SET name='test_name' WHERE id = max(id)

不幸的是,它不起作用。有什么想法吗?

表结构

id | name
---|------
 1 | ghost
 2 | fox
 3 | ghost

我只想更新最后一行,因为ID号是最大的一行。


答案 1

在此位置上不可能使用。但你可以这样做:MAX()

UPDATE table SET name='test_name' ORDER BY id DESC LIMIT 1;

对于多表,如@Euthyphro问题,请使用 。
该错误指示该列不明确。table.columnid

例:

UPDATE table1 as t1
LEFT JOIN table2 as t2
       ON t2.id = t1.colref_t2
SET t1.name = nameref_t2
ORDER BY t1.id DESC
LIMIT 1

答案 2
UPDATE table SET name='test_name' WHERE id = (SELECT max(id) FROM table) 

此查询将返回错误,因为您无法从要更新的同一表中执行 SELECT 子查询。

尝试使用以下命令:

UPDATE table SET name='test_name' WHERE id = (
    SELECT uid FROM (
        SELECT MAX(id) FROM table AS t
    ) AS tmp
)

这将创建一个临时表,该表允许对 UPDATE 和 SELECT 使用相同的表,但会以牺牲性能为代价。


推荐