Я пытаюсь создать 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;






Это будет область рекурсивных CTE, доступных с MySQL 8.
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;