如何用sql垂直洗牌列单元格?

问题描述 投票:2回答:2

我正在使用sqlite和python。假设我有一个如下所示的数据表:

Name   | Age
_______|____
Mike   | 12
Jack   | 45
Ben    | 37
Anne   | 19

问题:是否可以(使用sqlite)垂直洗牌?如果是这样,怎么样?我希望我的数据表看起来像这样(我不关心“年龄”列中的单元格被洗牌的顺序):

Name   | Age
_______|____
Mike   | 45
Jack   | 12
Ben    | 19
Anne   | 37
sql python-3.x sqlite
2个回答
2
投票

由于您的SQLite版本不支持window functionCTE,因此您可以尝试创建一个临时表来携带您的数据和ROWIDrandom()

在qazxsw poi上创建一个qazxsw poi列,然后在randomRnrandom()编号(随机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 使用它时的临时表。


0
投票

您可以使用下面的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  |
© www.soinside.com 2019 - 2024. All rights reserved.