2015-10-06 104 views
2

基本上我有兩個表像這樣:插入行的表從另一個表中的每個ID

表1:用戶 id_user,姓名,...

表2:葉 id_2,員工(列員工是來自第一個表的用戶的id),...

現在表2是空的(沒有行),並且對於來自第一個表的每個用戶,我想在第二個ins上創建一個行耳聽從第一表中的id作爲該塔僱員的值,如:

表2:葉

id employee column1 column2 column3 column4 column5 
id1 1   date1  date2  integer1 integer2 string 
id2 2   date1  date2  integer1 integer2 string 
... 

我試圖插入物:

1)該一個正常工作:

INSERT INTO entitleddays (employee, startdate, enddate, type, days, description) 
VALUES (1, '2015-01-01', '2015-12-31', 3, 5, 'test'); 

2)在這裏,我試了一下我上面的解釋,但它不工作:

INSERT INTO entitleddays (employee, startdate, enddate, type, days, description) 
VALUES ((SELECT id from users), '2015-01-01', '2015-12-31', 3, 5, 'test'); 

我收到以下錯誤:

#1242 - Subquery returns more than 1 row 

我理解錯誤:子查詢發現不止一個結果,因此不能插入值到員工,我的問題是,我不知道我應該使用什麼語法作爲noob我。我只想在第二個表中爲第一個表中的每一行創建一行(使用第一個表中的id)。

謝謝!

回答

9

只需使用insert . . . select

INSERT INTO entitleddays (employee, startdate, enddate, type, days, description) 
    SELECT id, '2015-01-01', '2015-12-31', 3, 5, 'test' 
    FROM users; 
+1

菜鳥,僅供參考,子查詢'(選擇用戶ID)'是什麼是返回多行,而'VALUE()'段應該只有一個排。所以你創建的語句對第一列'VALUES()'有多個值,這是無效的sql。 – user151841

+0

就這麼簡單...謝謝! – Noob

相關問題