【问题标题】:Replicating a "For Each" loop in a MySQL query在 MySQL 查询中复制“For Each”循环
【发布时间】:2012-11-22 13:39:34
【问题描述】:

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

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

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

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

感谢任何帮助,即使归结为“这是不可能的”。

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

【问题讨论】:

标签: mysql loops for-loop


【解决方案1】:

您不需要循环,可以使用单个 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

【讨论】:

  • 谢谢这回答了我的问题!没有看到这个解决方案,我觉得有点傻。这是一个针对您的回答的衍生问题,但是如何在该 SELECT 语句中增加一个整数?我了解如何在 select 语句中插入静态或计算值。不幸的是,主键是 BIGINT 而不是 AutoIncrement,我无权更改它。
猜你喜欢
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-24
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多