子レコードのない親レコードを見つけるためのSQLクエリが必要です 質問する

子レコードのない親レコードを見つけるための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`

子レコードの数がゼロの親を見つけるために、where 句を変更することはできますか。

ありがとう。

ベストアンサー1

NOT EXISTSこれには句を使うことができます

SELECT ParentTable.ParentID
FROM ParentTable
WHERE NOT EXISTS (
    SELECT 1 FROM ChildTable
    WHERE ChildTable.ParentID = ParentTable.ParentID
)

古いものもあります左結合してnullをチェックするアプローチ

SELECT ParentTable.ParentID
FROM ParentTable
LEFT JOIN ChildTable
  ON ParentTable.ParentID = ChildTable.ParentID
WHERE ChildTable.ChildID IS NULL

両方を試してみて、どちらが自分に適しているかを確認してください。

おすすめ記事