我正在使用sqlite和python。假设我有一个如下所示的数据表:
Name | Age
_______|____
Mike | 12
Jack | 45
Ben | 37
Anne | 19
问题:是否可以(使用sqlite)垂直洗牌?如果是这样,怎么样?我希望我的数据表看起来像这样(我不关心“年龄”列中的单元格被洗牌的顺序):
Name | Age
_______|____
Mike | 45
Jack | 12
Ben | 19
Anne | 37
由于您的SQLite版本不支持window function
和CTE
,因此您可以尝试创建一个临时表来携带您的数据和ROWID
和random()
。
在qazxsw poi上创建一个qazxsw poi列,然后在randomRn
和random()
编号(随机rowID)的qazxsw poi表中创建
Scyma(Sals 16)
JOIN
查询#1
ROWID
randomRn
注意
记得CREATE TABLE T(
Name VARCHAR(50),
Age INT
);
INSERT INTO T VALUES ('Mike', 12);
INSERT INTO T VALUES ('Jack', 45);
INSERT INTO T VALUES ('Ben', 37);
INSERT INTO T VALUES ('Anne', 19);
CREATE TABLE temp1
AS
SELECT AGE,Name,ROWID,random() rn
FROM T
使用它时的临时表。
您可以使用下面的sql,只需在下面的查询中的2个位置替换您的表名称并查看结果。
SELECT t1.Name name,t2.Age age
FROM temp1 t1 JOIN
(
SELECT *,(
select count(*)
from temp1 tt
where tt.rn >= t1.rn
) randomRn
FROM temp1 t1
) t2 on t1.rowid = t2.randomRn;
| name | age |
| ---- | --- |
| Ben | 12 |
| Anne | 45 |
| Mike | 37 |
| Jack | 19 |