Mysql 根据特定条件将数据从另一个表插入到一个表中
我有“表1”,其中主数据存储如下-Mysql 根据特定条件将数据从另一个表插入到一个表中,mysql,Mysql,我有“表1”,其中主数据存储如下- id name create_date validity expire_date 1 A 2015-08-01 3 2015-11-01 2 B 2015-09-01 12 2016-08-01 3 C 2015-09-15 1 2015-10-15 但现在,我们希望在“表2”中插入数据,根据有效期确定过期日期
id name create_date validity expire_date
1 A 2015-08-01 3 2015-11-01
2 B 2015-09-01 12 2016-08-01
3 C 2015-09-15 1 2015-10-15
但现在,我们希望在“表2”中插入数据,根据有效期确定过期日期,就像前端一样,不做任何更改。使用触发器或过程来完成此任务
id parent_id expire_date
1 1 2015-09-01
2 1 2015-10-01
3 1 2015-11-01
如何使用过程或触发器实现此目的 很难具体,因为你的问题不具体 一般来说,下面是设计一个查询以将数据从一个表插入另一个表的过程 首先,编写一个
SELECT
查询,生成一个包含要插入到表中的行和列的结果集。使用列列表获取正确的列,并使用适当的WHERE
子句获取正确的行。仔细观察该查询和结果集,确保其中包含正确的信息
Second,在调试的之前选择查询
INSERT INTO target_tablename (col, col, col)
测试此项以确保将正确的行插入到目标表中
第三个,在MySQL服务器中创建一个事件
,以运行刚才编写的查询。事件将在一天中的适当时间运行您的查询
如果你不按顺序执行这些步骤,你可能会非常困惑 很难具体,因为你的问题不具体
一般来说,下面是设计一个查询以将数据从一个表插入另一个表的过程
首先,编写一个SELECT
查询,生成一个包含要插入到表中的行和列的结果集。使用列列表获取正确的列,并使用适当的WHERE
子句获取正确的行。仔细观察该查询和结果集,确保其中包含正确的信息
Second,在调试的之前选择查询
INSERT INTO target_tablename (col, col, col)
测试此项以确保将正确的行插入到目标表中
第三个,在MySQL服务器中创建一个事件
,以运行刚才编写的查询。事件将在一天中的适当时间运行您的查询
如果你不按顺序执行这些步骤,你可能会非常困惑 可以使用存储过程完成任务-
CREATE DEFINER=`root`@`localhost` PROCEDURE `addexpire`(IN uname varchar(50), IN cdate date, IN vm int)
BEGIN
insert into table1 (name,create_date,validity) values (uname,cdate,vm);
BEGIN
declare uparent_id INT;
declare v_val int default 0;
SET uparent_id = LAST_INSERT_ID();
while v_val < vm do
BEGIN
declare expire_date date;
SET expire_date = DATE_ADD(cdate,INTERVAL v_val+1 MONTH);
insert into table2 (parent_id,expire_date) values (uparent_id,expire_date);
set v_val=v_val+1;
END;
end while;
END;
END
CREATE DEFINER=`root`@`localhost`过程`addexpire`(在uname varchar(50)中,在cdate date中,在vm int中)
开始
在表1(名称、创建日期、有效期)中插入值(uname、cdate、vm);
开始
声明uparent_id INT;
声明v_val int默认值为0;
SET uparent_id=最后一次插入_id();
而v_val
可以使用存储过程完成任务-
CREATE DEFINER=`root`@`localhost` PROCEDURE `addexpire`(IN uname varchar(50), IN cdate date, IN vm int)
BEGIN
insert into table1 (name,create_date,validity) values (uname,cdate,vm);
BEGIN
declare uparent_id INT;
declare v_val int default 0;
SET uparent_id = LAST_INSERT_ID();
while v_val < vm do
BEGIN
declare expire_date date;
SET expire_date = DATE_ADD(cdate,INTERVAL v_val+1 MONTH);
insert into table2 (parent_id,expire_date) values (uparent_id,expire_date);
set v_val=v_val+1;
END;
end while;
END;
END
CREATE DEFINER=`root`@`localhost`过程`addexpire`(在uname varchar(50)中,在cdate date中,在vm int中)
开始
在表1(名称、创建日期、有效期)中插入值(uname、cdate、vm);
开始
声明uparent_id INT;
声明v_val int默认值为0;
SET uparent_id=最后一次插入_id();
而v_val
问题不清楚。到目前为止您尝试了什么,您的最佳解决方案存在什么问题?因此,这不是一个代码生成器服务,请显示一些努力。另外,请阅读中的文章。谢谢。使用触发器解决查询。问题不清楚。到目前为止您尝试了什么,您的最佳解决方案有什么问题?因此,这不是一个代码生成器服务,请显示一些努力。另外,请阅读中的文章。谢谢。使用触发器解决查询。