У меня есть две таблицы, у которых есть идентификационный номер, который связан вместе (AllUsers
и AllProfiles
). Когда пользователь нажимает кнопку, я хочу, чтобы таблица AllUsers
проверяла наличие у нее идентификаторов, которых нет в таблице AllProfiles
, и удалите их. Я новичок в SQLCE и взломал это вместе. Проблема в том, что она удаляет всю таблицу. Зачем?SQL Statement, удаляющий всю таблицу
DELETE FROM AllUsers
WHERE EXISTS
(SELECT ID
FROM AllUsers
WHERE (ID NOT IN
(SELECT ID
FROM AllProfiles)))
Кроме того, является ли это эффективным способом массового удаления тысяч записей? Я попробовал DeleteAllOnSubmit Linq, но он был слишком медленным. Я надеюсь, так как приведенное выше сравнивает две таблицы напрямую, оно должно быть эффективным. (я не хочу использовать каскадное как мне нужно контроль за каждым столом в отдельности)
EDIT - The SELECT
оператор правильно возвращает недостающие идентификаторы, так что есть что-то не так с DELETE FROM AllUsers WHERE EXISTS
части.
Я ненавижу, используя В. Может ли SQL-CE использовать EXISTS? – MatBailie
@Dems Почему вы ненавидите 'IN' ??! :) Что касается SQL CE, я не могу сказать в любом случае. Я бы солгал, если бы сказал, что я эксперт по SQL CE (или даже слегка стих в нем). –
Он часто менее оптимизирован, чем альтернативы. И чрезмерно используется людьми, которые не могут присоединиться. И заставляет людей попробовать 'IN (@comma_delimited_string_of_chaff)'. И иногда ограничивается максимальным размером набора данных. И это просто не perrrrrrrty. – MatBailie