PHP中的Mysql - 如何仅更新表中的一行,但ID号最大
我正在尝试更新数据库中的字段,但遇到了一个如此简单的问题:我只想更新表中具有最大ID号的一行。我会做这样的事情:
UPDATE table SET name='test_name' WHERE id = max(id)
不幸的是,它不起作用。有什么想法吗?
表结构
id | name
---|------
1 | ghost
2 | fox
3 | ghost
我只想更新最后一行,因为ID号是最大的一行。
我正在尝试更新数据库中的字段,但遇到了一个如此简单的问题:我只想更新表中具有最大ID号的一行。我会做这样的事情:
UPDATE table SET name='test_name' WHERE id = max(id)
不幸的是,它不起作用。有什么想法吗?
id | name
---|------
1 | ghost
2 | fox
3 | ghost
我只想更新最后一行,因为ID号是最大的一行。
在此位置上不可能使用。但你可以这样做: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
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 使用相同的表,但会以牺牲性能为代价。