【问题标题】:How to insert records in loop in MySQL based on results from another table如何根据另一个表的结果在 MySQL 中循环插入记录
【发布时间】:2015-09-18 05:14:35
【问题描述】:

我有一个 TableA,我想从中获取一些信息,例如tableA 有列**name, age and rollNo**,我想将**age****rollNo** 从 tableA 插入到 tableB 中,只要年龄大于 20 并且滚动不小于 500

无论如何这可以在 MySQL 中使用过程或其他东西来完成。

【问题讨论】:

  • “循环插入记录”总是一个坏主意。这可以在单个语句中完成。
  • @Cᴏʀʏ 有时这是不可避免的。在这种情况下,如果必须在服务器上完成,使用 CURSOR 的存储过程是唯一的方法。
  • @Uueerdo:我想我不知道 MySQL 的查询语法有多强大——例如,我从未在 T-SQL 中使用过 CURSOR(相反,WHILE 循环很棒)。您几乎总是可以编写没有 CURSOR 的循环,即使 CURSOR 是最简单的方法。这样的事情应该是最后的手段(当然,以我的拙见)。
  • @Cᴏʀʏ 您仍然需要遍历 MySQL 存储过程中的游标结果。这不是相反的事情。正是您用来在存储过程中迭代结果的工具。

标签: mysql procedure


【解决方案1】:

这可以使用INSERT ... SELECT 语法在单个查询中完成:

INSERT INTO TableB (Age, RollNo)
SELECT Age, RollNo
FROM TableA
WHERE Age > 20 AND RollNo < 500

【讨论】:

  • @Cory 我不得不做一些修改,但效果很好。非常感谢。
猜你喜欢
  • 2010-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多