示例表。下表有沒有主鍵(只有外國人):SQL:刪除必須滿足多個條件的表的差異
col1 col2 col3 col4
1 1 A X
1 1 A Y
1 1 B Y
1 1 A -
1 1 - -
1 2 A X
1 2 A Y
1 2 B -
1 2 A -
1 2 - -
現在有一個列表具有完全相同的值 - 但其中一個或多個丟失。 例如,具有1-1-AY的行和具有1-1-BY的行
我不想說「從...刪除其中col1 = 1和col2 = 1,col3 = A和col4 = Y「等。如果這很容易,我不會在這裏問。
它必須通過差異評估工作。
我使用用戶定義的表類型(代表陣列),其中我認爲應該保持,然後所有值試了一下簡單的調用delete from .. where [value] not in (select s from @my_array)
它的工作原理一列,但只要有一秒鐘,它(顯然)失敗。 爲什麼?因爲在上面的例子中,在第一列和第二列中存在SAME值,並且一旦它們相等,語句「不在」是假的。
有沒有人有關於如何做到這一點的建議?
約從表S其中不存在'刪除哪個(SELECT * FROM @my_array一個地方s.col1 = a.col1 AND s.col2 = a.col2 AND s.col3 = a.col3 AND s.col4 = a.col4'? – juharr
感謝您的建議,但問題是,這樣所有其他行都會被刪除如果它們不在數組中 –
我認爲你想刪除所有不在數組中的行,所以喲你想刪除一些不在數組中的行,你不刪除哪些行? – juharr