[英]Join between Parent and Child table
我有2個表: Parent
和Child
有以下數據
現在,當我執行以下查詢時:
delete from Parent where Id in(2,3,4)
delete from Child
唯一的記錄是Parent
表
現在當我執行以下查詢時,我沒有得到任何記錄
select p.Id AS [ParentId],p.Name AS [ParentName], c.Id, c.Name from Parent p
Left join Child c on p.Id = c.ParentId
where p.IsActive = 1 and c.IsActive = 1
當我從上面的查詢中刪除and c.IsActive = 1
時,我得到了Package表中的記錄,但我想同時應用兩個活動檢查。 怎么做到這一點?
您的where
子句將left join
轉換為inner join
。 采用
select p.Id AS [ParentId],p.Name AS [ParentName], c.Id, c.Name
from Parent p
Left join Child c on p.Id = c.ParentId
and c.IsActive = 1
where p.IsActive = 1
左連接表的所有過濾器都需要在on
子句中。
另一個解決方案是在where子句條件中處理這兩種情況(當c.IsActive為null時 - 在子表中缺少行 - 或者為1)
where p.IsActive = 1 and COALESCE(c.IsActive, 1) = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.