我在同一个表中需要两个id列,在插入时创建唯一值。由于MySQL只允许一列自动递增,我需要为其他列执行类似max(id)+1的操作。
这是我期望工作的SQL:
INSERT INTO invoices (invoiceid)
VALUES ((SELECT MAX(invoiceid)+1 FROM invoices))
select语句独立工作,但在我的INSERT中,它是不允许的。我收到错误:您无法在FROM子句
中为更新指定目标表'发票'答案 0 :(得分:4)
您想使用INSERT INTO .... SELECT FROM
代替INSERT INTO...VALUES()
:
INSERT INTO invoices (invoiceid)
SELECT MAX(invoiceid)+1
FROM invoices
我的问题是你为什么不使用AUTO INCREMENT
字段来生成invoiceid
值?这就是它的用途,那么在插入数据时你就不必创建它。