SQLite3:将行与公共列合并
SQLite3: merge rows with common columns
对于某些上下文,我在 SQLite3 中有一个 table,目前看起来像这样:
我想要做的是合并具有相同品种的行。在这两种情况下都不会填充相同的列。到目前为止,我已经尝试过这种查询,但它并没有真正完成我正在寻找的工作,因为它不会根据需要删除重复数据或合并行。此外,似乎很难推广到所有列而不必手动输入每个列名。
select distinct t1.breed, coalesce(t1.dog_group_1, t2.dog_group_1) from breed_merge t1 left join breed_merge t2 on t1.breed = t2.breed;
输出:
Afador|
Affenhuahua|
Affenpinscher|
Affenpinscher|GROUP 1 - TOYS
Afghan Hound|
Afghan Hound|GROUP 4 - HOUNDS
...
期望的输出:
Afador|
Affenhuahua|
Affenpinscher|GROUP 1 - TOYS
Afghan Hound|GROUP 4 - HOUNDS
...
对于此示例数据,每个品种最多有 2 行,并且这两行中的每一行(如果存在)都包含一个值或 null
,您所要做的就是按 [= 分组12=] 并为每个其他列使用像 MAX()
这样的聚合函数:
SELECT breed, MAX(imgsrc) imgsrc, MAX(dog_group_1) dog_group_1, .....
FROM breed_merge
GROUP BY breed
对于某些上下文,我在 SQLite3 中有一个 table,目前看起来像这样:
我想要做的是合并具有相同品种的行。在这两种情况下都不会填充相同的列。到目前为止,我已经尝试过这种查询,但它并没有真正完成我正在寻找的工作,因为它不会根据需要删除重复数据或合并行。此外,似乎很难推广到所有列而不必手动输入每个列名。
select distinct t1.breed, coalesce(t1.dog_group_1, t2.dog_group_1) from breed_merge t1 left join breed_merge t2 on t1.breed = t2.breed;
输出:
Afador|
Affenhuahua|
Affenpinscher|
Affenpinscher|GROUP 1 - TOYS
Afghan Hound|
Afghan Hound|GROUP 4 - HOUNDS
...
期望的输出:
Afador|
Affenhuahua|
Affenpinscher|GROUP 1 - TOYS
Afghan Hound|GROUP 4 - HOUNDS
...
对于此示例数据,每个品种最多有 2 行,并且这两行中的每一行(如果存在)都包含一个值或 null
,您所要做的就是按 [= 分组12=] 并为每个其他列使用像 MAX()
这样的聚合函数:
SELECT breed, MAX(imgsrc) imgsrc, MAX(dog_group_1) dog_group_1, .....
FROM breed_merge
GROUP BY breed