2011-09-30 125 views
1

我想執行一個MySQL查詢插入一次:MySQL的每個子查詢結果

INSERT INTO taskattempts (taskID) VALUES (_); 

,我要爲每個查詢結果執行多次,一次:使用

SELECT id FROM tasks WHERE stageID = 1; 

來自第二個查詢的結果id作爲第一個taskID的值。

有沒有辦法使用單個MySQL查詢來做到這一點?運行多個查詢的PHP循環似乎極其低效。

* 編輯*

其實我需要填寫多列,兩個靜態和一個與子查詢。我發現INSERT INTO taskattempts(stageAttemptID,taskID,complete)SELECT 0,id,5 FROM tasks WHERE stageID = 5;作品,但不知道這是否猶太教。另外,爲了知識的利益,你可以用不同的查詢填寫不同的欄目嗎?

回答

2
INSERT INTO taskattempts (taskID) SELECT id FROM tasks WHERE stageID = 1; 

(這是通用支持的標準SQL)。

在回答這個問題的第二部分,你可以自由的SELECT子句中混合常量和列:

INSERT INTO taskattempts (stateAttemptID, taskID, complete) 
    SELECT 0, id, 5 FROM tasks WHERE stageID = 1; 

如果你的常量是字符串,不要忘了說出來了。請記住,如果需要,您可以包含複雜的SELECT聲明和JOIN和聚合。

+0

那很簡單。儘管爲了簡化我的問題,我錯過了一些東西。我實際上需要填寫多個列,兩個靜態和一個子查詢。我發現INSERT INTO taskattempts(stageAttemptID,taskID,complete)SELECT 0,id,5 FROM tasks WHERE stageID = 5;作品,但不知道這是否猶太教。另外,爲了知識的利益,你可以用不同的查詢填寫不同的欄目嗎? – wyatt

+0

@wyatt如果你錯過了你的問題的東西編輯問題。不要使用評論來擴展問題。 – rahularyansharma

+0

完全猶太教,看到更新的答案。 –