我在表格上选择一个数字
SELECT * FROM table
我生成的东西看起来像
| column |
| 2 |
| 5 |
我想知道是否有办法将2和5分成2和5的多行。所以基本上
| column |
| 2 |
| 2 |
| 5 |
| 5 |
| 5 |
| 5 |
| 5 |
编辑:正如我的最终目标所指出的那样,我真正想要完成的是一种投票选择,基本上我存储一个人获得的选票数量#并且我想转向#分成多行,这样我就可以将它转移到另一个程序中以供获胜者选择。
答案 0 :(得分:1)
您可以使用数字(也称为计数)表来执行此操作:
SELECT col
FROM mytable AS t1
INNER JOIN (
SELECT @rn := @rn + 1 AS num
FROM (
SELECT 0 AS n UNION ALL SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0
UNION ALL SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0
UNION ALL SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0 ) AS x
CROSS JOIN (
SELECT 0 AS n UNION ALL SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0
UNION ALL SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0
UNION ALL SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0 ) AS y
CROSS JOIN (SELECT @rn := 0) AS var
) AS t2 ON t1.col >= t2.num
ORDER BY col
以上查询使用值范围为[1-100]的数字表。如果您的列包含更大的值,则必须使用其他CROSS JOIN
操作来增加数字表。
答案 1 :(得分:0)
你可以通过重复连接来指数增长它。
但你真正想要完成的是什么?
select
a.*
from
table a
left join table b on 1=1
left join table c on 1=1
答案 2 :(得分:0)
作为一种解决方法,您可以添加一个包含两列的表格,如:
|Id|Numbers|
|1 | 1 |
|2 | 2 |
|3 | 2 |
|4 | 3 |
|5 | 3 |
|6 | 3 |
|7 | 4 |
|. | ... |
|n | n |
然后你可以使用
LEFT JOIN ON numbers = column
否则,您需要使用带有循环的存储过程,具体取决于'列'值