1

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

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

为了清楚起见,这是我正在尝试做的伪代码:

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

任何帮助表示赞赏,即使它归结为“这是不可能的”。

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

4

1 回答 1

3

您不需要循环,您可以使用单个 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
于 2012-12-04T20:26:30.030 回答