编辑添加:不确定为什么表格格式不起作用,但这里是书面示例:
我有一个简单的SQL表(称之为SIMPLE),具有唯一值
**VALUE**
1699
2349
2934
3100
我希望在'VALUE'列中创建每个值的3个重复,并为每个值创建一个索引为1:3的第二列。
有没有人有一个简单的方法呢?
答案 0 :(得分:0)
以下是使用工会执行此操作的简单方法:
SELECT value, 1 AS idx FROM yourTable UNION ALL
SELECT value, 2 FROM yourTable UNION ALL
SELECT value, 3 FROM yourTable
ORDER BY value, idx;
答案 1 :(得分:0)
以下效果比union all
select t.value, n.n
from t cross join
(select 1 as n union all select 2 union all select 3) n;
为什么呢?该表只需扫描一次。如果表格相对较大,这只是一个问题,但值得一提的是更有效的解决方案。
答案 2 :(得分:0)
以下是SQLite中的一个示例:
CREATE TABLE X(a INT); INSERT INTO X VALUES (1699), (2349), (2934), (3100);
CREATE TABLE Y(b INT); INSERT INTO Y VALUES (1), (2), (3);
SELECT X.a, Y.b FROM X, Y ORDER BY 2, 1;