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