繁体   English   中英

在列中找到最高值,在该列中插入新的记录,并再增加1个数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM