簡體   English   中英

如何從沒有父級的表中刪除子記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM