如何在MySQL中根据记录整数值生成重复行的SELECT结果?
MySQL根据count值生成多行结果的解决方案
方法一:使用递归CTE(MySQL 8.0+推荐)
这是最灵活的方式,适合MySQL 8.0及以上版本,无需额外创建表。通过递归公共表表达式(CTE)自动生成对应行数:
WITH RECURSIVE cte AS ( -- 锚点:初始化每个letter的起始数字为1 SELECT letter, 1 AS n FROM your_table_name UNION ALL -- 递归:每次数字加1,直到不超过对应count值 SELECT cte.letter, cte.n + 1 FROM cte JOIN your_table_name t ON cte.letter = t.letter WHERE cte.n < t.count ) -- 输出结果并重命名列 SELECT letter AS column1, n AS column2 FROM cte ORDER BY letter, n;
把代码里的your_table_name替换成你实际的表名即可,执行后就能得到目标展开结果。
方法二:使用数字辅助表(MySQL 5.x兼容)
如果你的MySQL版本低于8.0,不支持递归CTE,可以先创建一个包含连续数字的辅助表,再关联查询:
-- 1. 创建数字表,插入足够覆盖最大count值的数字(这里最大是5) CREATE TABLE numbers (n INT); INSERT INTO numbers VALUES (1), (2), (3), (4), (5); -- 2. 关联原表查询 SELECT t.letter AS column1, num.n AS column2 FROM your_table_name t JOIN numbers num ON num.n <= t.count ORDER BY t.letter, num.n;
后续如果有更大的count值,只需往numbers表插入更多数字即可。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

