2011-11-04 54 views
0

我有兩個表一個調用用戶和另一個調用todolist。在我的網絡應用程序中,我有一個管理員功能,我希望管理員能夠爲所有用戶分配一個。我試圖編寫SQL,但我似乎只是在寫命令塊,或者我只是簡單的愚蠢。如何插入表依賴於其他表

那麼如何從users表中選擇所有用戶,然後對todo表進行插入,以便基本上todo表以每個用戶和任務結束?

+0

也許 - INSERT INTO TODO(用戶標識,TASK)SELECT(用戶標識, 'SomeTask')來自用戶的 –

+0

非常有益的,但如果我想選擇在TODO上最大的id是什麼實際插入之前的列表?如果我嘗試這個,我會收到一個錯誤。 'INSERT INTO todo(field1,field2,field3,...)SELECT max(somfield)somefield1,somefield2,somefield3,... FROM users,todo' – user677275

+0

這將是一個錯誤 - Max(somefield)可能會給兩個用戶如果他們同時嘗試操作,結果也是一樣。如果你使用了一個保證不流暢的序列,那會更好。 –

回答

0

INSERT ... SELECT FROM

INSERT INTO todo (field1, field2, field3, ...) 
SELECT somefield1, somefield2, somefield3, ... 
FROM users 
WHERE ... 
+0

感謝Marc B再提一個問題。如果我想從表格中選擇最大號碼,我將如何插入並將其作爲插入的一部分,我該如何去做類似的事情?換句話說'INSERT INTO todo(field1,field2,field3,...)SELECT max(somfield)somefield1,somefield2,somefield3,... FROM用戶,todo WHERE ...'這是否正確? 。 – user677275

+0

使用聚合函數(如max)以及其他非聚合字段需要使用'group by'子句。 –