0

我正在尝试编写一个 MySQL 插入查询,该查询将识别列中的最大值,然后为插入的记录将其递增一。我想当我制作表格时,我将此字段设置为 auto_increment 但由于某种原因它不起作用。我当前的插入语句是:

INSERT INTO victoria (name, album, order_by) VALUES (:name, :album, :order)

order_by 字段是需要加一的字段。

4

1 回答 1

1

如果您出于某种原因想要在不使用列的情况下增加列的值,auto_increment您可以执行以下操作

INSERT INTO victoria 
SELECT :name, :album, 
       COALESCE((SELECT MAX(order_by) FROM victoria), 0) + 1;

注意:它可能无法在重负载下为您提供不同的值,这意味着同时插入行的多个并发用户可以获取相同的MAX(order_by)值。因此,如果您以后不打算“重新排序”行,则最好坚持使用一auto_increment列。

这是SQLFiddle演示

于 2013-09-16T04:12:44.233 回答