MySQL GROUP_CONCAT диапазона чисел

У меня есть стол, как...

year_from| year_to |...            
---------|---------|----
  1990   |  1993   |...     -> 1990 1991 1992 1993            
  2000   |  2004   |...     -> 2000 2001 2002 2003 2004
  2003   |  2005   |...     -> 2003 2004 2005

и я пытаюсь выяснить, есть ли способ сгенерировать столбец только с помощью SQL чистым способом, печатая ярость (своего рода смесь между циклом и GROUP_CONCAT во вложенных выборках), но я не получаю его. Это будет для индекса столбца полнотекстового поиска из других таблиц, и поскольку у меня есть ограниченная версия MySQL (5.6), на самом деле производительность не является критичной в этом вопросе, приоритет состоит в том, чтобы сохранить один sql и избежать создания какой-либо процедуры., Любые комментарии приветствуются! & заранее спасибо

1 ответ

Решение

Вы можете сделать это, используя производную таблицу, содержащую все доступные годы, что-то вроде этого:

SELECT s.year_from,s.year_to,GROUP_CONCAT(t.year_col SEPARATOR ' ') as new_col
FROM(
    SELECT 1990 as year_col UNION ALL SELECT 1991 UNION ALL SELECT 1992 ...--ALL THE YEARS HERE
    ) t
INNER JOIN YourTable s
 ON(t.year between s.year_from and s.year_to)
GROUP BY s.year_from,s.year_to

Который будет производить:

year_from | year_to | new_col
  1990        1993     1990 1991 1992 1993
  ....
Другие вопросы по тегам