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

Mysql 如何在父/子关系表中查找无菌节点?,mysql,row,parent,relationship,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.g

如果我有一个简单的表,它由一些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

我的思考过程:比较孤立行列表,即没有父行的行与非孤立行列表,即有父行的行。但老实说,这可能没有任何意义。

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

SELECT d1.*
FROM dagr d1
LEFT JOIN dagr d2
ON d1.guid = d2.parentGUIDIS 
WHERE d2.parentGUIDIS NULL
参见左连接