[英]Find highest value in column insert a new record 1 number higher in said column
我正在尝试编写一个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演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.