暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MYSQL根据id递增顺序插入

原创 2022-01-04
325

表的基本信息

image.png

要求:每次插入新数据时id自动设置为+1的递增数值

正确的语法

insert into goods values((select * from(select max(goodsId) from goods)as g)+1,'ss',1,12,22,null);
复制

可能出现的问题1

insert into goods values((select * from(select max(goodsId) from goods))+1,'ss',1,12,22,null);
复制

报错 Error Code: 1248. Every derived table must have its own alias
原因 意思是每个派生的表必须有自己的别名。
这里的子查询

select max(goodsId) from goods
复制

执行出来的结果需要作为派生表给上一级查询

select * from
复制

使用,因此子查询的结果必须有一个别名。

可能出现的问题2

insert into goods values((select max(goodsId) from goods)+1,'ss',1,12,22,null);
复制

报错 Error Code: 1093. You can’t specify target table ‘goods’ for update in FROM clause
原因 意思是您不能在 FROM 子句中为更新指定目标表“goods”,在MYSQL中不允许修改的表和查询的表是同一个表。所以通过再查询一个派生表来解决。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论