自动生成具有不同日期的行

时间:2017-12-13 21:10:14

标签: mysql

有没有办法自动生成具有不同日期的行,但保持其余数据相同?

例如,我试图每7周生成一次以下内容?有没有一种敏锐的方法可以做到这一点,还是应该手动重复以下内容?

INSERT INTO courses ( CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee )


SELECT 'TEMP',9,51,'2018-01-22','2018-01-26',4 -- Week ,2,CourseFee FROM topic WHERE TopicID=51;

2 个答案:

答案 0 :(得分:0)

这是您的解决方案:

  1. 创建一个id为

  2. 的表格
  3. 插入1至52周52周

  4. 从表格中选择一周的开始日期和结束日期。

  5. 插入包含一周开始日期和结束日期的其他数据

  6. Create table test1(id int not null PRIMARY KEY);
    
    INSERT into test1 select 1;
    
    insert ignore into test1 select id+(select max(id) from test1) from test1;
    
     insert ignore into test1 select id+(select max(id) from test1) from test1;
    
     insert ignore into test1 select id+(select max(id) from test1) from test1;
    
     insert ignore into test1 select id+(select max(id) from test1) from test1;
    
     insert ignore into test1 select id+(select max(id) from test1) from test1;
    
     insert ignore into test1 select id+(select max(id) from test1) from test1;
    
     delete from test1 where id >52;
    
     -- Select 52 week begin and end date
     select DATE_ADD('2017-01-02',INTERVAL (id-1)*7 DAY) Week_begin_date, DATE_ADD('2017-01-02',INTERVAL (id-1)*7+4 DAY) Week_end_date from test1;
    
     --Insert Data for 52 weeks
     INSERT INTO courses ( CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee )
     SELECT 'TEMP',9,51,DATE_ADD('2017-01-02',INTERVAL (id-1)*7 DAY), DATE_ADD('2017-01-02',INTERVAL (id-1)*7+4 DAY) ,id, <LocationID_value>, <CourseFee_value> from test1;
    

答案 1 :(得分:0)

我不确定您对&#34;不同日期&#34;的要求。是。如果您只需要从一行到下一行的不同时间戳,以下内容将起作用:

INSERT INTO courses ( CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee )
SELECT 'TEMP',9,51,NOW(), NOW(),4,2,CourseFee 
FROM topic WHERE TopicID=51;

如果&#34;不同的日期&#34;表示单行上的每个日期都需要是不同的日历日期,以下内容将起作用:

INSERT INTO courses ( CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee )
SELECT 'TEMP',9,51,NOW(), NOW() + INTERVAL 1 DAY,4,2,CourseFee 
FROM topic WHERE TopicID=51;

请澄清您对&#34;不同日期&#34;的要求。我可以形成一个更好的答案。