2
我有兩個表都有一個鏈接在一起的ID號(AllUsers
和AllProfiles
)。當用戶按下按鈕時,我希望AllUsers
表檢查它所具有的AllProfiles
表中不存在的ID並刪除它們。我是SQLCE的新手,並一起攻擊它。問題是,它一直在刪除整個表格。爲什麼?刪除整個表的SQL語句
DELETE FROM AllUsers
WHERE EXISTS
(SELECT ID
FROM AllUsers
WHERE (ID NOT IN
(SELECT ID
FROM AllProfiles)))
此外,這是一種批量刪除數千條記錄的有效方法嗎?我試過Linq的DeleteAllOnSubmit,但速度太慢。我希望自上面直接比較兩個表,它應該是有效的。 (我不想使用級聯,因爲我需要每個單獨的表的控制)
修改 - SELECT
語句正確返回缺少的ID,所以有一些錯誤的DELETE FROM AllUsers WHERE EXISTS
部分。
我討厭使用在。 SQL-CE可以使用EXISTS嗎? – MatBailie
@Dems你爲什麼討厭'IN' ??! :)至於SQL CE,我不能說任何一種方式。如果我說我是SQL CE專家(或者甚至是輕微的詩句),我會撒謊。 – 2011-12-23 02:45:18
它通常比替代品不太優化。並且被無法加入的人過度使用。並讓人們嘗試'IN(@comma_delimited_string_of_chaff)'。有時僅限於最大尺寸的數據集。這只是不正確。 – MatBailie