我的表结构有一个可空的ID字段ParentId,可以通过返回到表的Id来映射以创建层次结构。 ParentId可以为空。我希望能够使用父数据获取Ids,并且我希望Parent为null的所有数据。但是,我不希望Parent不为null的行返回2x。
我可以使用哪种类型的联接?
以下是我要归还的例子:
Id 1 ParentId 2 -> ID 2 ParentId Null
Id 3 ParentId Null -> NULL
注意,如果ParentId有一个ID,那么我不希望它作为一行返回但是被跳过。以下是INCORRECT,因为Id 2包含两次。它应仅包含在右侧,而不是左侧的项目。
Id 1 ParentId 2 -> ID 2 ParentId Null
Id 2 ParentId Null
Id 3 ParentId Null
答案 0 :(得分:0)
这是你要找的吗?
SELECT t.ID, t.thingName, t.parentID, pt.thingName as parentName
FROM things t
LEFT JOIN things pt on pt.id = t.parentID
我在SQL Fiddle(link)上设置了一个示例。
更新:更改为LEFT JOIN,以便仍然显示没有父母的记录。根据您的要求,parentID不为NULL的行只会返回一次。如果这仍然不是您想要的,请澄清。