复制" For Each"在MySQL查询中循环

时间:2012-12-04 20:21:45

标签: mysql loops for-loop

我一直在使用MySQL工作,但我仍然在更高级的查询中使用了一些菜鸟,并且经常发现自己编写了我认为(或希望)可以大大缩短的冗长查询。

我最近遇到了一种情况,我需要在表中为另一个表中的每个条目创建X个新条目。我还需要将第二个表中每一行的值复制到我插入第一行的每一行中。

要清楚,这是我正在尝试做的伪代码:

For each row in APPS
   create new row in TOKENS
   set (CURRENT)TOKENS.APP_ID = (CURRENT)APPS.APP_ID

任何帮助都会受到赞赏,即使它归结为“这是不可能的。”

作为一个注释,这些表只共享这一个字段,我将静态地或通过其他方法设置其他字段,因此简单地复制并不是一个真正的选择。

1 个答案:

答案 0 :(得分:2)

您不需要循环,可以使用单个INSERT命令一次插入所有行:

INSERT INTO TOKENS (APP_ID)
SELECT APP_ID 
FROM APPS;

如果要为该行设置其他值,只需修改INSERT列表和SELECT子句即可。例如:

INSERT INTO TOKENS (APP_ID, static_value, calculated_value)
SELECT APP_ID, 'something', 'calculated-' + APP_ID
FROM APPS