[英]How To Delete Child Records From Table That Not Have Parent
如何從表 tradecode 中刪除在 tradecode 上沒有父級的子記錄?
基於表 MappingCodeValue parent 和 child 的 table trade code 上存在 parent 和 child
所以我需要從貿易代碼表中刪除在表貿易代碼上沒有父級的記錄
所以根據我的解釋,貿易代碼表上的兩行 5,6 將被刪除
TradeCodeId PartId CodeType CodeValue
5 1444 ECCS-URB AB666-URB
6 1931 ECCS-URB AB778-URB
5 和 6 是子行,沒有 AB666-US 和 AB778-US 的父行
所以它錯了,我會刪除它
但是貿易代碼上的另一行根據表映射代碼值有父和子,所以它是正確的
那么如何從交易代碼中編寫查詢刪除具有子行且沒有父行的行
基於映射碼值上存在的值
drop table #MappingCodeValue
drop table #TradeCode
create table #MappingCodeValue
(
id int identity (1,1),
ParentCodeType nvarchar(50),
ParentCodeValue nvarchar(50),
ChildCodeType nvarchar(50),
ChildCodeValue nvarchar(50)
)
INSERT INTO #MappingCodeValue
(ParentCodeType,ParentCodeValue,ChildCodeType,ChildCodeValue)
VALUES
('ECCS-US','AB123-US','ECCS-URB','AB123-URB'),
('ECCS-US','AB555-US','ECCS-URB','AB555-URB'),
('ECCS-US','AB666-US','ECCS-URB','AB666-URB'),
('ECCS-US','AB756-US','ECCS-URB','AB756-URB')
CREATE TABLE #TradeCode
(
TradeCodeId int identity(1,1),
PartId int,
CodeType nvarchar(50),
CodeValue nvarchar(50)
)
insert into #TradeCode(PartId,CodeType,CodeValue)VALUES
(1222,'ECCS-US','AB123-US'),
(1255,'ECCS-US','AB555-US'),
(1222,'ECCS-URB','AB123-URB'),
(1255,'ECCS-URB','AB555-URB'),
(1444,'ECCS-URB','AB666-URB'),
(1931,'ECCS-URB','AB778-URB')
我會使用'NOT IN'。
如在
SELECT *
from childtable
where parentid not in (select id from parenttable)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.