2012-11-05 40 views
2

我需要在同一个表中创建插入时创建唯一值的两个id列。由于MySQL只允许一列自动增量,因此我需要为另一列执行诸如max(id)+1之类的操作。MAX(col)+1插入到同一个MySQL表中的问题

这是我希望的工作SQL:

INSERT INTO invoices (invoiceid) 
VALUES ((SELECT MAX(invoiceid)+1 FROM invoices)) 

select语句独立工作,但我的插件内,这是不允许的。我得到的错误:

INSERT INTO invoices (invoiceid) 
SELECT MAX(invoiceid)+1 
FROM invoices 

我对你的问题是你为什么不:FROM子句

+2

您知道这对多个交易无法正常工作吗? –

+0

您是否尝试过使用变量?这意味着将2个查询合并为一个.http://dev.mysql.com/doc/refman/5.0/en/user-variables.html –

回答

4

你想用INSERT INTO .... SELECT FROM而不是INSERT INTO...VALUES()您不能指定目标表“发票”的更新中使用AUTO INCREMENT字段生成invoiceid值?这就是它的用途,那么在插入数据时就不必创建它。

+1

仍然无法工作。 MySQL不允许你从你插入的表中选择。 –

+0

@a_horse_with_no_name看到这个演示 - 它正在处理sql小提琴 - http://sqlfiddle.com/#!2/776f5/1 – Taryn

+0

有趣,谢谢。那么这显然不被认为是一个子选择。 –