Mysql 使用选定行中的现有值自动递增列

Mysql 使用选定行中的现有值自动递增列,mysql,sql,Mysql,Sql,我使用此查询选择将自动递增列“发票号”的行。 SELECT *FROM oc_order WHERE order_status_id >= 0 GROUP BY order_id; 订单id为1276的行具有“发票号”的值222 我想自动递增,以便下一个选中的行id,其中order\u status\u id>=0将具有'invoice\u no'值223,依此类推……在MySQL中,只有一种可伸缩且健壮的方法可以做到这一点。这是一个invoice表,其中包含一个名为invoice\u

我使用此查询选择将自动递增列“发票号”的行。

SELECT *FROM oc_order WHERE order_status_id >= 0
GROUP BY order_id;
订单id为1276的行具有“发票号”的值222


我想自动递增,以便下一个选中的行
id,其中order\u status\u id>=0
将具有
'invoice\u no'
值223,依此类推……

在MySQL中,只有一种可伸缩且健壮的方法可以做到这一点。这是一个
invoice
表,其中包含一个名为
invoice\u no
的自动递增列。当您需要新的唯一发票号时,请执行以下操作:

INSERT INTO invoice (col, col) VALUES (whatever, whatelse)
SET @new_invoice_no := LAST_INSERT_ID()
UPDATE oc_order SET invoice_no = @new_invoice_no  (or whatever)
如果您尝试使用
SELECT MAX(invoice\u no)
或类似工具执行此操作,则当数据库繁忙时,您将开始获得大量重复值


这是一篇关于这个话题的文章

在MySQL中,只有一种可扩展且健壮的方法可以做到这一点。这是一个
invoice
表,其中包含一个名为
invoice\u no
的自动递增列。当您需要新的唯一发票号时,请执行以下操作:

INSERT INTO invoice (col, col) VALUES (whatever, whatelse)
SET @new_invoice_no := LAST_INSERT_ID()
UPDATE oc_order SET invoice_no = @new_invoice_no  (or whatever)
如果您尝试使用
SELECT MAX(invoice\u no)
或类似工具执行此操作,则当数据库繁忙时,您将开始获得大量重复值

这是一篇关于这个话题的文章