更新同一个表中值为最大值的位置
UPDATE stock_cost_content
SET model_id = '5'
WHERE id = (SELECT MAX(id) FROM stock_cost_content us)
但是,sql 显示表“stock_cost_content”定义两次的错误。我该如何解决这个问题?
在 MySQL 中,您可以将 update
与 limit
一起使用:
UPDATE stock_cost_contentSET model_id = '5'ORDER BY id DESCLIMIT 1;
您可以查看文档 here .
如果要计算值,可以使用join
:
update cart c join(select max(id) as maxid from card) ccon c.id = cc.maxidset productname = 'hey';
如果多行可能具有最大 ID 并且您希望更新所有行,这将特别有用。
MySQL使用insert语句时查询最大值作为ID插入
在MySQL中我们经常使用当前表中ID最大值+1作为下一个插入元素的主键ID进行insert
执行、当然是在不设置主键自增长的情况下、那么在操作同一张表的情况下insert....(select max(id) from table)
等语句的时候我们就需要特别的注意。
查询出user
表中主键ID
最大值+1做为添加下一调数据的主键ID
# table----> user
# 完整语法
insert into from user(id,name,age,email) values(id,name,age,email); # 实际填充数据
insert into from user(id,name,age,email) values((select max(id) from user),'zhangsan',22,'123@qq.com');
执行语句报错
You can't specify target table 'user' for update in FROM clause
意思是不能再同一个表中查出数据又修改数据,所以要给表取个别名,避免错误。
修改
# 实际填充数据
insert into from user(id,name,age,email)
values((select max(id)+1 from user us),'zhangsan',22,'123@qq.com');
注意这个回id+1进行插入哦