是否可以检索键列的最大值,增加它,然后将其作为新值插入数据库中,就像这样(pseudo-sql)

insert into mytable (mykeycolumn,col1,col2)
   values((max(mykeycolumn)+1),'val1','val2');

最佳答案

是的,您是来自INSERTSELECT,但是您的固定字段也必须“来自SELECT”,例如:

INSERT INTO mytable (mykeycolumn, col1, col2)
   SELECT MAX(mykeycolumn)+1, 'val1', 'val2'
   FROM mytable;




补充:正如a_horse_with_no_name所指出的,如果在MAX() + 1中同时进行事务处理,则mytable可能会引起问题。在某些时候,将生成两个相同的mykeycolumn值,并且您会得到一个错误。理想的解决方案是将表转换为使用auto_increment。

关于mysql - 更新查询中无自动增量列的最大值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27943095/

10-11 04:51