我正在尝试加入两个表,一个用于描述物种,另一个用于物种之间的父/子关系。不幸的是,有多个“半”重复项导致我的查询每个分类单元返回多行。
使用TID和ParentTID字段的分类关系表的示例:
TID AuthorityID ParentTID
1 1 4 <-- offending row (note tid, parenttid)
1 1 2
2 1 2
3 2 2
1 2 4 <-- offending row (note tid, parenttid)
分类单元定义表包含带有分类单元名称的文本字段。在这种情况下,即使使用DISTINCT,重复的parentID为'4'也会给我多行。我的查询如下:
SELECT SciName, rankID, MAX(parenttid) AS parentID, taxaenumtree.tid,
MAX(taxauthid) AS taid FROM taxaenumtree INNER JOIN taxa ON taxa.tid =
taxaenumtree.tid WHERE rankID > 1
AND SciName NOT LIKE "Animalia"
GROUP BY taxaenumtree.tid
结果集(在使用其他表加入TID之前):
TID AuthorityID ParentTID
1 1 4
2 1 2
3 2 2
我想获得类似(后加入)的内容:
TaxonID FullName RankID ParentID TaxonAuthority
1 Magnoliophyta 10 4 1
2 Plantae 10 2 1
3 Cupressacae 30 2 2
and so on, producing 1 row for each taxon with the highest ParentID.
对于每条记录,每个独特的分类单只有一行。
答案 0 :(得分:0)
我认为这个问题的最佳解决方案是按照@Strawberry的建议对数据集进行排序,然后通过对每个ID和父ID对进行分组,为每个ID选择最小有序值,将其设置为每个组的新字段,然后删除有序值和最小值不相等的所有行。