我想在每一個獨特的(columnA,columnB)元組大部分一條記錄在我下面的delete語句刪除:至多有一個記錄刪除每個元組的獨特組合
DELETE FROM tableA
WHERE columnA IN
(
--some subqueryA
)
AND columnB IN
(
--some subqueryB
)
這是如何實現的呢?請僅考慮那些在針對MSS 2000(即T-SQL 2000語法)時使用的語句。我可以通過迭代一個臨時表來完成,但我只想使用集合來編寫它。
實施例:
subqueryA returns 1
subqueryB returns 2,3
如果原始表包含 (columnA,columnB,columnC)
5,2,5
1,2,34
1,2,45
1,3,86
然後
1,2,34
1,3,86
應予刪除。每個唯一的(columnA,columnB)-tuple在tableA中最多出現兩次,每次運行我的SQL語句時,我最多隻想刪除這些獨特組合之一 - 從來沒有兩個。
如果有一個給定唯一的(columnA,columnB)元組的一個記錄, 刪除。
如果有兩個記錄,一個給定的唯一(columnA, columnB)元組,只刪除其中之一。
Delete tabA
from TableA tabA
Where tabA.columnC in (
select max(tabAA.columnC) from TableA tabAA
where tabAA.columnA in (1)
and tabAA.columnB in (2,3)
group by tabAA.columnA,tabAA.columnB
)
桌子上有鑰匙嗎? –
PK是columnA,columnB和columnC(columnC是出票列)。 – ppecher
您可以顯示一些示例行並確定要刪除哪些行,以及如何確定要保留哪些行? –