2017-05-30 284 views
-3

在SQL中,我必須從表A中刪除依賴於表B的數據。
要刪除的數據應該滿足兩個條件WorkArea='123' and FileNo='45'SQL中的依賴關係

BWorkArea但它不包含FileNo的數據。
而表A包含滿足這兩個條件的記錄。

沒有任何引用密鑰。爲更清楚起見,請在此處添加查詢:

從表A中選擇*,其中WorkArea ='123'和FileNo = '45';

這將生成結果記錄。但由於它依賴於表B,我不能直接刪除它。另外,從表B中刪除它是不可能的,因爲WorkArea中的數據是一個整體,它包含許多文件,我必須刪除特定的文件。

那麼如何刪除表A中的數據?

This is Table A with col1 and col2 as primary key.

This is Table B with col1 as a primary key.

+2

表結構請... – Ravi

+3

添加一些示例表數據和結構。 – Yugandhar

+0

這些表之間是否有任何外鍵設置?就像我之前的每個人都說過的:表格結構/數據(例子)可能需要回答您 – Hybris95

回答

0

如果沒有外鍵,下面的句子會工作。

DELETE FROM [A] WHERE [WorkArea] = '123' AND [FileNo] = '45'; 

然後你就可以programmaticaly檢查是否有「孤兒」上表B有以下要求:

SELECT DISTINCT [B].[WorkArea] 
FROM [B] 
LEFT JOIN [A] 
ON [A].[WorkArea] = [B].[WorkArea] 
WHERE [A].[WorkArea] IS NULL 

要加強這方面的最後一部分,並從中產生DELETE一句話,只是存儲結果將此請求轉換爲臨時表格,然後將其作爲WHERE語句與IN關鍵字一起使用。

+0

謝謝@ Hybris95爲您提供即時幫助! –

+0

隨時upvote /接受答案 – Hybris95