显示表的人与SQL
答
这应该做的伎俩,但如果你有很多的人有很多孩子可能会有点慢:
SELECT DISTINCT p.*
FROM person p
LEFT JOIN person c ON c.parentID = p.ID
LEFT JOIN person gc on gc.parentID = c.ID
WHERE gc.ID IS NULL
答
SELECT *
FROM person
WHERE
ID NOT IN (
SELECT id
FROM (
SELECT p.*,c.id as childID,g.id AS grandChildId
FROM person p
LEFT JOIN person c
ON c.parentID = p.ID
LEFT JOIN person g
ON g.parentID = c.ID
) AS person_relation
WHERE grandChildId
is NOT NULL
创建临时表可以是有益的,但对于单个查询这将工作。