在列中找到最高值,在所述列中插入一个更高的新记录1

时间:2013-09-16 03:53:25

标签: php mysql

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

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

order_by字段是需要递增1的字段。

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 演示