2017-02-13 93 views
1

我有兩個表。 臨時表:將數據從一個表插入另一個表並添加新值

CREATE TABLE IF NOT EXISTS `temporary` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `FK_user` int(11) NOT NULL, 
    `FK_bin` varchar(50) NOT NULL, 
    `orderDate` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=35 ; 

和訂單表:

CREATE TABLE IF NOT EXISTS `orders` (
    `id` int(11) NOT NULL, 
    `FK_user` int(11) NOT NULL, 
    `FK_bin` varchar(50) NOT NULL, 
    `orderNumber` varchar(11) NOT NULL, 
    `orderDate` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

我要插入臨時表中的所有值Orders表以及與此手動添加訂單編號:uniqid(rand())

我使用INSERT INTO orders SELECT * FROM temporary WHERE FK_user = ? 但由於訂單編號不臨時表存在,他們沒有工作......

我可怎麼辦?請

+1

我在那裏看不到問題。只需在選擇的INSERT INTO ORDERS(id,FK_user,FK_bin,orderNumer,orderDate)上指定列即可。SELECT t.id,t.FK_user,t.FK_bin,UUID()as orderNumber,t.orderDate from temporary t;' – Rumpelstinsk

+1

不要使用'SELECT *'。在insert into和select語句中提及每個列名... – Naga

回答

4

希望我能正確理解你的問題。我認爲以下查詢將有所幫助。

INSERT INTO orders(id , FK_user , FK_bin , orderNumber , orderDate) 
(SELECT id , FK_user , FK_bin , uniqid(rand()) AS orderNumber , orderDate 
FROM temporary WHERE FK_user = ?); 

使用您的函數在select語句中生成訂單號,如上述查詢中所述。

+0

謝謝,這是工作,我有一個問題:「as」是將uniqid變量連接到orderNumber列嗎? – Rocstar

+1

正如用於給你的函數的值賦予別名。在這種情況下,我們給別名orderNumber uniqid(rand())。 – Tajinder

相關問題