Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 插入具有日期间隔的N行_Mysql_Date_Insert - Fatal编程技术网

Mysql 插入具有日期间隔的N行

Mysql 插入具有日期间隔的N行,mysql,date,insert,Mysql,Date,Insert,我需要在数据库中插入行,其中每一行都是相同的,除了一个日期列,该列的日期对于每一新行应该增加1周。所以,基本上是这样的: for(n = 0; n<X; n++) insert into events (date, title) values (start_date + 7*n, 'static title'); 有什么MySQL技巧可以用来做到这一点吗?您可以使用: SELECT 'static_title' AS title, DATE_ADD(@start_da

我需要在数据库中插入行,其中每一行都是相同的,除了一个日期列,该列的日期对于每一新行应该增加1周。所以,基本上是这样的:

  for(n = 0; n<X; n++)
      insert into events (date, title) values (start_date + 7*n, 'static title');
有什么MySQL技巧可以用来做到这一点吗?

您可以使用:

SELECT
 'static_title' AS title,
 DATE_ADD(@start_date, INTERVAL @i:=@i+1 WEEK) AS result_date
FROM
 (SELECT
 (two_1.id + two_2.id + two_4.id + 
 two_8.id + two_16.id) AS id
 FROM
 (SELECT 0 AS id UNION ALL SELECT 1 AS id) AS two_1
 CROSS JOIN (SELECT 0 id UNION ALL SELECT 2 id) AS two_2
 CROSS JOIN (SELECT 0 id UNION ALL SELECT 4 id) AS two_4
 CROSS JOIN (SELECT 0 id UNION ALL SELECT 8 id) AS two_8
 CROSS JOIN (SELECT 0 id UNION ALL SELECT 16 id) AS two_16
 ) AS sequence
 CROSS JOIN
-- @i:=0 for not including current week
 (SELECT @i:=-1, @start_date:=CURDATE()) AS init
WHERE
  sequence.id<10;

-这将在这里产生N行,N=10。要插入行,只需使用insert。。选择语法。小提琴是一种乐器。同样,在示例中,开始日期设置为CURDATE,但您可以在查询中轻松地调整它。

开始日期是如何确定的?它是由我给出的,例如2014-01-22。目标是在未来的X周内,每周三结束一行。在事件日期、标题值日期和开始日期、间隔n周中插入“静态标题”;哇,那有什么用?我不确定我是否理解其中的任何一个:pIt将为您完成这项工作:p实际上,因为MySQL中没有序列-需要的值是以2的幂和生成的,比如3=2^1+2^0-需要的行数是从交叉连接派生出来的。在幂为2的交叉连接的数量和序列id之间是否有任何联系?例如,如果我想要N=500,您还需要更多吗?好的,序列是以2的幂和生成的,您可以单独执行查询来检查它。序列id将是连续整数,但要用某个值限制它,where是where子句。即sequence.id