我設計如下查詢我的刪除操作沒有更好的方法。我是SQL新手,只想在這裏查看有經驗的人,如果沒問題,或者有更好的方法來做到這一點。我使用的DB2數據庫有沒有寫這個查詢
DELETE FROM TableD
WHERE B_id IN
(
SELECT B.B_id
FROM TableB tB
INNER JOIN TableA tA
ON tB.A_id = tA.A_id
WHERE A_id = 123
) AND
C_id IN (1,2,3)
這有兩個IN子句對此我有點擔心,不知道如果我可以使用EXISTS子句的任何地方。
數據庫結構如下:
- 表A具有一個與表B
- 表B MANY關係具有一個與表C
- 表B MANY關係具有一個與表MANY關係d
- 表d具有複合主鍵(B_ID,C_ID)
表d數據有點類似於下面
B_id|C_id
----------
1 | 1
1 | 2
1 | 3
2 | 4
2 | 5
3 | 5
這裏我必須刪除具有C_id數組值的行。但由於該指數是B_ID和D_ID的複合,我通過平等運營商獲取相關B_ID表A的特定實體A_ID = 123
你是什麼意思與 「好」?對於給定的數據庫設計和存儲的數據更好?如果是,那麼請添加關於它的信息。如果你指的是格式,好了,是的,查詢看起來不錯... :) –
哈哈:P當然,我會加入更多的細節。 2分鐘:) – Raja
我增加了更多的細節Data_henrik – Raja