MySQL记录在同一表中没有子

时间:2019-06-20 13:34:54

标签: php mysql sql

我需要在同一张表中获取无子邮件

ID  parent_id  body
1   NULL       my first comment (parent)
2   1          my reaction on first comment (child)
3   NULL       comment without reactions

如您所见,消息与parent_id相关。 我该如何让没有任何孩子的父母。所以我的结果是

ID  parent_id  body
3   NULL       comment without reactions

我尝试了一些东西,但无法弄清楚。就像在选择中选择。在stackoverflow上,我可以找到一些示例,但大多数示例来自2个表,而不是同一表。也许我有雾。有人可以帮我吗?

2 个答案:

答案 0 :(得分:4)

尝试使用NOT EXISTS子句,该子句断言给定记录没有父并且没有子:

SELECT *
FROM yourTable t1
WHERE
    t1.parent_id IS NULL AND
    NOT EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.parent_id = t1.ID);

答案 1 :(得分:2)

SELECT * 
FROM table1
WHERE parent_id IS NULL
  AND id NOT IN (
    SELECT parent_id 
    FROM table1
    WHERE parent_id IS NOT NULL
  )