sql - SQLite3:将行与公共列合并
问题描述
在某些情况下,我在 SQLite3 中有一个表,目前看起来像这样:
我要做的是合并具有相同品种的行。在这两种情况下都不会填充相同的列。到目前为止,我已经尝试过这种查询,但它并没有真正完成我正在寻找的工作,因为它不会根据需要删除重复数据或合并行。此外,如果不必手动输入每个列名,似乎很难推广到所有列。
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 行,并且这 2 行(如果存在)中的每一行都包含一个值 or null
,您所要做的就是分组并像其他每一列breed
一样使用聚合函数MAX()
:
SELECT breed, MAX(imgsrc) imgsrc, MAX(dog_group_1) dog_group_1, .....
FROM breed_merge
GROUP BY breed
推荐阅读
- swift - Swift Sourcery:如何获取特定的关联类型?
- php - 合并多个 woocommerce 我的帐户选项卡
- c++ - 如何确定两个优先于重载解析的隐式转换序列?
- android-edittext - Edittext的褪色底部
- elasticsearch - 弹性搜索 - 鹡鸰 - 地理距离
- python - 带有 Groupy Pandas 的循环移位(旋转行)数据框
- r - R中的Tobit回归,而循环回归我的数据没有使用censReg审查
- r - 使用 if else 语句翻译和删除操作
- php - PHP Laravel - 验证 webhook 签名
- java - 当我从图库中选择图像时应用程序崩溃