如何在父/子关系表中找到无菌节点?

时间:2013-12-11 10:47:01

标签: mysql row parent relationship

如果我有一个由GUID标记的简单表,那么(假设它只有这两列):

GUID | parentGUID

如何找到无菌节点(或行),以便没有孩子将parentGUID作为其GUID。假设“没有孩子”只是标记为空。

这是我最初的尝试:

SELECT *
FROM dagr d1, dagr d2
WHERE d1.parentGUID = ''
AND d2.parentGUID != ''
AND d1.guid != d2.parentGUID
AND d1.guid != d2.guid

我的思考过程:将孤儿列表(即没有父母的行)与非孤儿(即有父母的行)进行比较。但老实说,这可能毫无意义。

1 个答案:

答案 0 :(得分:0)

这有点难以判断这是否是您所要求的,但如果您想在dagr中找到没有匹配行的行,您可以尝试LEFT JOIN。对于你的目的来说可能有点晚了,但是谷歌可能会发现这一点。

SELECT d1.*
FROM dagr d1
LEFT JOIN dagr d2
ON d1.guid = d2.parentGUIDIS 
WHERE d2.parentGUIDIS NULL

请参阅LEFT JOIN http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php