更新查询中无自动增量列的最大值

时间:2015-01-14 12:35:17

标签: mysql sql

是否可以检索键列的最大值,增加它并将其作为新值插入数据库中,如下所示(伪sql)

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

3 个答案:

答案 0 :(得分:1)

是的,INSERT来自SELECT,但您的固定字段必须来自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

答案 1 :(得分:1)

你可以用这个:

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

答案 2 :(得分:0)

试试这个

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