我一直在使用MySQL工作,但我仍然在更高级的查询中使用了一些菜鸟,并且经常发现自己编写了我认为(或希望)可以大大缩短的冗长查询。
我最近遇到了一种情况,我需要在表中为另一个表中的每个条目创建X个新条目。我还需要将第二个表中每一行的值复制到我插入第一行的每一行中。
要清楚,这是我正在尝试做的伪代码:
For each row in APPS
create new row in TOKENS
set (CURRENT)TOKENS.APP_ID = (CURRENT)APPS.APP_ID
任何帮助都会受到赞赏,即使它归结为“这是不可能的。”
作为一个注释,这些表只共享这一个字段,我将静态地或通过其他方法设置其他字段,因此简单地复制并不是一个真正的选择。
答案 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