MySQL GROUP_CONCAT 的数字范围
MySQL GROUP_CONCAT of a range of numbers
我有一个table喜欢...
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 之间的混合选择),但我不明白。
这将用于其他 table 的全文搜索列索引,并且因为我有 MySQL (5.6) 的限制版本,实际上在这个问题上性能并不重要,优先考虑的是保持单个 sql 并避免创建任何过程。
欢迎任何评论!
提前致谢
您可以使用包含所有可用年份的派生 table 来做到这一点,如下所示:
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
....
我有一个table喜欢...
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 之间的混合选择),但我不明白。 这将用于其他 table 的全文搜索列索引,并且因为我有 MySQL (5.6) 的限制版本,实际上在这个问题上性能并不重要,优先考虑的是保持单个 sql 并避免创建任何过程。 欢迎任何评论! 提前致谢
您可以使用包含所有可用年份的派生 table 来做到这一点,如下所示:
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
....