SQLite:当列不同但由一列链接时,如何从另一个 table 创建一个新的 table
SQLite: How to create a new table from another table when the columns are disparate but linked by one column
假设我有一个新的 table 像这样,但还没有值:
key
uuid
dog
cat
deer
etc
我有一个像这样的填充 table,它具有我想关联到新的空 table:
的值
key
uuid
format
status
1
uuid1
dog
hairy
2
uuid1
cat
fluffy
3
uuid2
dog
shaved
4
uuid3
deer
smooth
我想要做的是从 table 2 中获取每个“格式”并在 table 1 中创建一个新列,其中 table 2 中的“状态”是值table 中的新“格式”列。这是我希望 table 看起来像上面的 table 是我正在使用的东西:
key
uuid
dog
cat
deer
etc
1
uuid1
hairy
fluffy
null
other value
2
uuid2
shaved
null
null
other value
3
uuid3
null
null
smooth
other value
额外棘手的部分在 table 2,uuid1 可以有比 uuid2 更多或更少的“格式”值,反之亦然,继续喜欢 50k uuid,所以我需要用一个空值或假值
这可能吗,还是我处理的数据太荒谬以至于无法实现?
由于您已经创建了新的 table,这意味着您已经知道列 format
.
的可能值
在这种情况下,您可以使用条件聚合来填充 table:
INSERT INTO table2 (uuid, dog, cat, deer)
SELECT uuid,
MAX(CASE WHEN format = 'dog' THEN status END),
MAX(CASE WHEN format = 'cat' THEN status END),
MAX(CASE WHEN format = 'deer' THEN status END)
FROM table1
GROUP BY uuid;
查看简化版 demo.
假设我有一个新的 table 像这样,但还没有值:
key | uuid | dog | cat | deer | etc |
---|
我有一个像这样的填充 table,它具有我想关联到新的空 table:
的值key | uuid | format | status |
---|---|---|---|
1 | uuid1 | dog | hairy |
2 | uuid1 | cat | fluffy |
3 | uuid2 | dog | shaved |
4 | uuid3 | deer | smooth |
我想要做的是从 table 2 中获取每个“格式”并在 table 1 中创建一个新列,其中 table 2 中的“状态”是值table 中的新“格式”列。这是我希望 table 看起来像上面的 table 是我正在使用的东西:
key | uuid | dog | cat | deer | etc |
---|---|---|---|---|---|
1 | uuid1 | hairy | fluffy | null | other value |
2 | uuid2 | shaved | null | null | other value |
3 | uuid3 | null | null | smooth | other value |
额外棘手的部分在 table 2,uuid1 可以有比 uuid2 更多或更少的“格式”值,反之亦然,继续喜欢 50k uuid,所以我需要用一个空值或假值
这可能吗,还是我处理的数据太荒谬以至于无法实现?
由于您已经创建了新的 table,这意味着您已经知道列 format
.
的可能值
在这种情况下,您可以使用条件聚合来填充 table:
INSERT INTO table2 (uuid, dog, cat, deer)
SELECT uuid,
MAX(CASE WHEN format = 'dog' THEN status END),
MAX(CASE WHEN format = 'cat' THEN status END),
MAX(CASE WHEN format = 'deer' THEN status END)
FROM table1
GROUP BY uuid;
查看简化版 demo.