我正在尝试编写一个MySQL插入查询,该查询将识别列中的最高值,然后将其增加一个以插入记录。我想当我制作表格时,我将此字段设置为auto_increment,但由于某种原因它不起作用。我当前的插入语句是:
INSERT INTO victoria (name, album, order_by) VALUES (:name, :album, :order)
order_by字段是需要递增1的字段。
答案 0 :(得分:1)
如果您出于某种原因想要在不使用auto_increment
列的情况下增加列的值,则可以执行以下操作
INSERT INTO victoria
SELECT :name, :album,
COALESCE((SELECT MAX(order_by) FROM victoria), 0) + 1;
注意:它可能无法在重负载下为您提供明确的值,这意味着几个并发用户同时插入行可以获取相同的MAX(order_by)
值。因此,如果您不打算对后面的行进行“重新排序”,则最好使用auto_increment
列。
这是 SQLFiddle 演示