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

标签 mysql row parent relationship

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

GUID | parentGUID

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

这是我最初的尝试:

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

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

最佳答案

很难判断这是否是您所要求的,但如果您想在 dagr 中找到没有匹配行的行,您可以尝试 LEFT JOIN。对于您的目的而言,这可能有点晚了,但 Google 用户可能会发现它的一些用处。

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

请参阅左连接 http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php

关于mysql - 如何在父子关系表中找到无菌节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20517057/

相关文章:

php - 获取行并分解 - PHP mySQL

java - Spring Data JPA @Convert 抛出不允许操作异常

javascript - href 和 tr 点击避免重叠

Angular Material 垫表行分组

mysql - 如何获取Mysql中特定类别的最后一项

php - 没有 laravel select Row 的 Eloquent 不起作用

mysql - 如何在 phpmyadmin 表中删除多个主键?

input - jQuery。元素宽度取决于其父宽度

css - 相对于父 div 的固定位置

jquery如何在悬停时仅更改一个父级