MySQL为每个子查询结果插入一次

时间:2011-09-30 03:12:45

标签: mysql loops

我想执行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;有效,但想知道这是否是犹太人。另外,为了知识,您可以用不同的查询填写不同的列吗?

1 个答案:

答案 0 :(得分: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语句和聚合。