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