我正在尝试更新我的数据库中的字段,但遇到了这样一个简单的问题:我想更新表中最大id号的一行.我会做那样的事情:
UPDATE table SET name='test_name' WHERE id = max(id)
Run Code Online (Sandbox Code Playgroud)
不幸的是它不起作用.有任何想法吗?
id | name
---|------
1 | ghost
2 | fox
3 | ghost
Run Code Online (Sandbox Code Playgroud)
我想只更新最后一行,因为ID号是最好的.
ibl*_*lue 64
MAX()
在这个位置不可能使用.但你可以这样做:
UPDATE table SET name='test_name' ORDER BY id DESC LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
小智 6
UPDATE table SET name='test_name' WHERE id = (SELECT max(id) FROM table)
Run Code Online (Sandbox Code Playgroud)
此查询将返回错误,因为您无法从正在更新的同一个表中执行 SELECT 子查询。
尝试使用这个:
UPDATE table SET name='test_name' WHERE id = (
SELECT uid FROM (
SELECT MAX(id) FROM table AS t
) AS tmp
)
Run Code Online (Sandbox Code Playgroud)
这会创建一个临时表,它允许对 UPDATE 和 SELECT 使用相同的表,但以性能为代价。
Muh*_*rar -6
先选择最大id,然后更新。
UPDATE table SET name='test_name' WHERE id = (SELECT max(id) FROM table)
归档时间: |
|
查看次数: |
34609 次 |
最近记录: |