根据 IF EXIST 插入数据
INSERT data based on IF EXIST
我正在为我的一个客户构建系统更新功能,该客户拖放一个 xls sheet(导出 SAP 表格)并且该查询基本上 TRUNCATES
现有 "project data" 在 import_table
中并从 xls 中插入所有项目数据,现在工作正常,但我需要帮助的是编写一个存储过程,从 import_table
中选择 project_number
和检查 project_number
是否已存在于 project_table
中,如果不存在,则通过 project_number
.
从 import_table
插入新项目数据
到目前为止我有:
CREATE PROCEDURE `update_projects` ()
CREATE DEFINER=`root`@`%` PROCEDURE `update_projects`()
BEGIN
INSERT INTO `permit`.`project2`(project,description,mat,city,stat,own,est_start,est_end,constr_start,constr_end,constr_cnf,plan_order,div_code,div_long,constr_total_plan,constr_total_act)
SELECT OrderNo,OrderDescription,mat,MainWorkCtr,OrdUsrStatus,JobOwner,ESTStartDate,ESTEndDate,ConstrStartDate,ConstrEndDate,ConstrCNFDate,PlanningOrder,division,division_long,cons_total_plan_hrs,cons_total_act_hrs
FROM `permit`.`wrm100_raw` i
WHERE NOT EXISTS (SELECT 1 FROM `permit`.`project2` pt WHERE i.OrderNo = pt.project)
END;
如果我理解正确,那么你可以使用 WHERE
子句进行检查:
CREATE DEFINER=`root`@`%` PROCEDURE `update_projects`()
BEGIN
INSERT INTO `db`.`project_table` (project_table columns...)
SELECT import_table columns...
FROM db.import_table i
WHERE NOT EXISTS (SELECT 1
FROM db.project_table pt
WHERE i.project_number = pt.project_number
)
END;
如果问题重复 project_number
,那么您应该定义一个唯一的 constraint/index 并让数据库验证数据。
我正在为我的一个客户构建系统更新功能,该客户拖放一个 xls sheet(导出 SAP 表格)并且该查询基本上 TRUNCATES
现有 "project data" 在 import_table
中并从 xls 中插入所有项目数据,现在工作正常,但我需要帮助的是编写一个存储过程,从 import_table
中选择 project_number
和检查 project_number
是否已存在于 project_table
中,如果不存在,则通过 project_number
.
import_table
插入新项目数据
到目前为止我有:
CREATE PROCEDURE `update_projects` ()
CREATE DEFINER=`root`@`%` PROCEDURE `update_projects`()
BEGIN
INSERT INTO `permit`.`project2`(project,description,mat,city,stat,own,est_start,est_end,constr_start,constr_end,constr_cnf,plan_order,div_code,div_long,constr_total_plan,constr_total_act)
SELECT OrderNo,OrderDescription,mat,MainWorkCtr,OrdUsrStatus,JobOwner,ESTStartDate,ESTEndDate,ConstrStartDate,ConstrEndDate,ConstrCNFDate,PlanningOrder,division,division_long,cons_total_plan_hrs,cons_total_act_hrs
FROM `permit`.`wrm100_raw` i
WHERE NOT EXISTS (SELECT 1 FROM `permit`.`project2` pt WHERE i.OrderNo = pt.project)
END;
如果我理解正确,那么你可以使用 WHERE
子句进行检查:
CREATE DEFINER=`root`@`%` PROCEDURE `update_projects`()
BEGIN
INSERT INTO `db`.`project_table` (project_table columns...)
SELECT import_table columns...
FROM db.import_table i
WHERE NOT EXISTS (SELECT 1
FROM db.project_table pt
WHERE i.project_number = pt.project_number
)
END;
如果问题重复 project_number
,那么您应该定义一个唯一的 constraint/index 并让数据库验证数据。