返回没有子项的父项的查询

时间:2016-05-31 12:17:47

标签: sql

我有一个看起来像这样的表:

enter image description here

它有产品。有些通过“父ID”与父产品相关。

我需要一个只会选择没有任何子项的父产品的查询。例如“Product-4”。

任何人都可以帮我吗?这似乎是一个非常简单的解决方案。

3 个答案:

答案 0 :(得分:1)

你可以试试这个: -

  1. 选中ParentId = 0
  2. 获取父产品
  3. 删除那些拥有子产品的ParentId
  4. 此处为Full Query,

    Select * from Table_Name 
    Where ParentId = 0
       AND Id NOT IN (Select DISTINCT ParentId from Table_Name WHERE ParentId NOT NULL)
    

答案 1 :(得分:0)

我想说的是:SELECT * FROM parents WHERE (SELECT COUNT(*) FROM products WHERE products.parent_id = parents.id) = 0但不确定,现在无法测试。

答案 2 :(得分:0)

更新

我没有意识到这张桌子与自己有关系。

以下内容应该有效:

 SELECT *
FROM   my_table m1
WHERE  NOT exists
       (
              SELECT *
              FROM   my_table m2
              WHERE  m1.id = m2.parent_id)
AND    parent_id = 0; 

这不应该选择孩子。