mysql - 如何在mysql中使用存储过程将记录从一个表保存到另一个表?

标签 mysql sql scripting data-migration

我试过了,但我不知道该怎么做。 我想使用存储过程将记录从一个表迁移到另一个表。我从一个简单的程序(不确定是对是错)开始,根据某些条件打印记录。这是我尝试过的代码:

CREATE PROCEDURE curdemo()
BEGIN
 DECLARE done INT DEFAULT FALSE;
  DECLARE a VARCHARCHAR(16);
  DECLARE cur1 CURSOR FOR SELECT user_name FROM discovery_configuration;
   OPEN cur1;
  REPEAT 
    FETCH cur1 INTO a;
     IF a!=' ' THEN 
        select a;
    END IF;
  END REPEAT;
   CLOSE cur1;
END;

如果 user_name 列为空,我需要一个存储过程将这些记录迁移到另一个表。谁能指导我?

最佳答案

为什么一定要是存储过程?

您可以在一个查询中复制记录,然后用另一个查询删除它们。

复制到另一个user_name为空的表:

INSERT INTO other_table (id, user_name, other)
SELECT (id, user_name, other)
FROM discovery_configuration
WHERE user_name IS NULL OR TRIM(user_name) = '';

然后,复制这些记录后,从原始表中删除:

DELETE FROM discovery_configuration WHERE id IN (SELECT id FROM other_table);

关于mysql - 如何在mysql中使用存储过程将记录从一个表保存到另一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13184871/

相关文章:

sql - 从 plpgsql 函数返回行集。

shell脚本: not able to assign integer to a variable

linux - 保存第一行 - Linux Shell 脚本

php - 在多列中搜索

PHP mySQL 变量访问

mysql - phpMyAdmin - 我无法导出 SQL 表?语法已经给出了吗?

sql - 大型数据库的 MySQL 查询运行速度非常慢

php - Android 本地数据库通过 PHP 转换为 XML 到 mySql。

sql - "where (ParamID = @ParamID) OR (@ParamID = -1)"是 sql 选择的一个好习惯吗

sql - 尝试在 SQL 2008 中生成插入数据脚本时绕过循环外键错误