需要SQL Query来查找没有子记录的父记录

use*_*859 25 sql

我根本不熟悉SQL,所以希望有人可以帮我查询一个查询,该查询将查找父表中没有子表中记录的所有记录.

以下工作为我找到特定子字段值的父记录...

`SELECT    ParentTable.ParentID
 FROM      ParentTable INNER JOIN
             ParentTable ON ParentTable.ParentID = ChildTable.ChildID
 WHERE     (ChildTable.ChildField_ = '2131')
 Group By
   ParentTable.ParentID
 Having
   count(distinct ChildTable.ChildField) > 0`
Run Code Online (Sandbox Code Playgroud)

我可以更改where子句,了解如何查找具有零子记录计数的父项.

谢谢.

Phi*_*hil 74

你可以使用一个NOT EXISTS条款

SELECT ParentTable.ParentID
FROM ParentTable
WHERE NOT EXISTS (
    SELECT 1 FROM ChildTable
    WHERE ChildTable.ParentID = ParentTable.ParentID
)
Run Code Online (Sandbox Code Playgroud)

还有旧的左连接并检查空方法

SELECT ParentTable.ParentID
FROM ParentTable
LEFT JOIN ChildTable
  ON ParentTable.ParentID = ChildTable.ParentID
WHERE ChildTable.ChildID IS NULL
Run Code Online (Sandbox Code Playgroud)

尝试两者,看看哪一个更适合你.