MySQL使用Insert语句时查询该表排序最大值插入

1.1 Bug场景:

1.1 在MySQL中我们经常使用当前表中排序sort最大值+1作为下一个插入元素执行insert语句时报错

INSERT INTO basic_semester_info (semester, sort) VALUES (semester, sort)
INSERT INTO basic_semester_info (semester, sort) VALUES (1, (select (max(sort) + 1) as sort from basic_semester_info))

MySQL使用Insert语句时查询该表排序最大值插入

 MySQL使用Insert语句时查询该表排序最大值插入

2.1 Bug原因:

You can't specify target table 'basic_semester_info' for update in FROM clause     ------>>  翻译过就是  不能在FROM子句中为更新指定目标表“基本信息”

大概意思就是:不能再同一个表中查出数据又修改数据,所以要给表取个别名,避免错误。

3.1 解决方法:

在查询最大排序的sql表加上别名即可

INSERT INTO basic_semester_info (semester, sort) VALUES (1, (select (max(a.sort) + 1) as sort from basic_semester_info a))

MySQL使用Insert语句时查询该表排序最大值插入