使用所选行中的现有值自动增加列

时间:2016-02-01 11:54:14

标签: mysql sql

我有这个查询来选择将自动增加列'invoice_no'

的行
SELECT *FROM oc_order WHERE order_status_id >= 0
GROUP BY order_id;

order_id#1276的行有'invoice_no'值222

我想自动增量,以便下一个选定的行id WHERE order_status_id >= 0的{​​{1}}值为223,依此类推......

1 个答案:

答案 0 :(得分:0)

在MySQL中只有一种可扩展且可靠的方法。这是一个invoice表,其中包含一个名为invoice_no的自动增量列。当您需要新的唯一invoice_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_no)或类似内容执行此操作,则在数据库繁忙时,您将开始获取大量重复值。

这是关于该主题的文章。 http://www.plumislandmedia.net/mysql/unique-numbers-oracle-mysql/