同表複製修改日期的procedure

  • 同表複製數據,讓其日期增長sql

    1. 算出總共的天數,用group by 分類後的. space
    2. 提早求出第一塊數據的總和 sum = select count(*) from tbl_event;
    3. 固定操做第一塊的話,用limit 限制, select * from tbl_event limit 0,sum;
    4. 把原始數據當成一整塊.移動一次後成兩塊. (st_date,interval space day) 第一次移動
    5. 第二次移動的話,仍是操做第一塊,可是讓interval數據+ (stdate,interval space*2 day) changeDate(in multiple int) 這個參數是指,要把現有數據的日期增長几倍,好比如今數據是2條,multiple=1執行結果是4條數據,並且數據stdate 是遞增的
  • 代碼實現markdown

    DELIMITER $
    DROP PROCEDURE IF EXISTS changeDate$ CREATE PROCEDURE changeDate (IN multiple int) BEGIN DECLARE i int DEFAULT 1;
      DECLARE _space int DEFAULT 1;
      DECLARE _sum int DEFAULT 1;
      SELECT COUNT(1) INTO _space FROM (SELECT te.st_date FROM A te GROUP BY te.st_date) temp;
      SELECT COUNT(*) INTO _sum FROM A te;
    IF multiple > 0 THEN
        WHILE i <= multiple DO INSERT INTO A ( st_date ) SELECT DATE_ADD(st_date, INTERVAL _space * i DAY) AS st_date, FROM A LIMIT 0, _sum;
          SET i := i + 1;
        END WHILE;
      END IF;
     END$ DELIMITER ;
相關文章
相關標籤/搜索