表的基本信息
要求:每次插入新数据时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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。