Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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 使用未来年份创建@X行_Mysql_Union_User Defined - Fatal编程技术网

Mysql 使用未来年份创建@X行

Mysql 使用未来年份创建@X行,mysql,union,user-defined,Mysql,Union,User Defined,我正在尝试创建一个SQL,它将显示未来年份的@X行: year(now())+1 year(now())+2 year(now())+3 ... @X是用户定义的变量 我只想使用union select,但它看起来很糟糕,适用于相当低的@x: set @x:=3; select year(now())+1 as year union select if(@x>1, year(now())+2,null) as year union select if(@x>2, year(now(

我正在尝试创建一个SQL,它将显示未来年份的@X行:

year(now())+1
year(now())+2
year(now())+3
...
@X是用户定义的变量

我只想使用union select,但它看起来很糟糕,适用于相当低的@x:

set @x:=3;
select year(now())+1 as year
union select if(@x>1, year(now())+2,null) as year
union select if(@x>2, year(now())+3,null) as year
union select if(@x>3, year(now())+4,null) as year;

这将是自MySQL 8以来可用的递归CTE的领域

SET @x = 5;

WITH RECURSIVE
years
AS
(
SELECT year(now()) year
UNION ALL
SELECT year + 1
       FROM years
       WHERE year + 1 - year(now()) <= @x
)
SELECT *
       FROM years;