Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为每个子查询结果插入一次MySQL_Mysql_Loops - Fatal编程技术网

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

为每个子查询结果插入一次MySQL,mysql,loops,Mysql,Loops,我想执行一个MYSQL查询: INSERT INTO taskattempts (taskID) VALUES (_); 我希望对每个查询结果执行多次: SELECT id FROM tasks WHERE stageID = 1; 使用第二个查询的结果id作为第一个查询中taskID的值 有没有办法使用一个MySQL查询来实现这一点?运行多个查询的PHP循环似乎效率极低 *编辑* 我实际上需要填写多个列,两个是静态的,一个是子查询。我发现INSERT-INTO-taskattempts(s

我想执行一个MYSQL查询:

INSERT INTO taskattempts (taskID) VALUES (_);
我希望对每个查询结果执行多次:

SELECT id FROM tasks WHERE stageID = 1;
使用第二个查询的结果id作为第一个查询中taskID的值

有没有办法使用一个MySQL查询来实现这一点?运行多个查询的PHP循环似乎效率极低

*编辑*

我实际上需要填写多个列,两个是静态的,一个是子查询。我发现INSERT-INTO-taskattempts(stageAttemptID,taskID,complete)从stageID=5的任务中选择0,id,5;行得通,但我想知道这是否符合犹太教。另外,出于知识的考虑,您能否用不同的查询填写不同的列

 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
s以及聚合。不过,为了简化我的问题,我遗漏了一些东西。我实际上需要填写多个列,两个是静态的,一个是子查询。我发现INSERT-INTO-taskattempts(stageAttemptID,taskID,complete)从stageID=5的任务中选择0,id,5;行得通,但我想知道这是否符合犹太教。此外,出于知识的兴趣,你能用不同的查询填写不同的栏吗?@wyatt如果你的问题中遗漏了什么,请编辑问题。不要用评论来扩展问题。