查询树的数据库表示(MySQL)

时间:2010-07-29 13:00:38

标签: mysql

我有两个表,一个包含节点,另一个包含它们之间的关系,如下所示:

表A(命名节点)

NodeID | NodeName 
 100   |  Name 1
 101   |  Name 2
 102   |  Name 3

表B(命名为关系)

NodeParent | NodeChild
  100      |    101
  101      |    102

我需要执行一个需要查找哪些节点是孤儿的查询(它们不在关系表中)。如何同时搜索NodeParent和NodeChild?

2 个答案:

答案 0 :(得分:2)

SELECT 
  n.NodeID 
FROM 
  Node AS n 
LEFT JOIN 
  Relationship AS r
ON
  n.NodeID = r.NodeChild
WHERE
  r.NodeChild IS NULL

答案 1 :(得分:1)

这将为您提供关系表中没有子节点的所有节点。

select n.*
from Node n
left join Relationship r on r.NodeChild = n.NodeID
where r.NodeChild is null;