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))
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))