我一直在工作中使用 MySQL,但我在更高级的查询方面仍然有点菜鸟,并且经常发现自己编写冗长的查询,我觉得(或希望)可以大大缩短。
我最近遇到了一种情况,我需要在一个表中为另一个表中的每个条目创建 X 个新条目。我还需要将第二个表中每一行的值复制到我插入到第一张表中的每一行中。
为了清楚起见,这是我正在尝试做的事情的伪代码:
For each row in APPS
create new row in TOKENS
set (CURRENT)TOKENS.APP_ID = (CURRENT)APPS.APP_ID
感谢任何帮助,即使它归结为“这是不可能的。”
请注意,这些表仅共享一个字段,我将静态或通过其他方法设置其他字段,因此简单地复制并不是一个真正的选择。
最佳答案
您不需要循环,您可以使用单个 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
关于mysql - 在 MySQL 查询中复制 "For Each"循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13711209/