2011-09-30 90 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

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