2012-11-05 85 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

有趣,謝謝。那麼這顯然不被認爲是一個子選擇。 –