У меня есть таблица с повторяющимися записями во всех полях, кроме одного (col4 для примера). Мне просто нужно удалить дубликаты записей, где поле t1.col4 пустое.
ID Col1 Col2 Col3 Col4
1 Joe 1 2 Yes
2 Sue 1 2
3 Joe 2 3
4 Joe 1 2
Цель: удалить только ID 4
Я пробовал как внутреннее соединение (я не думаю, что msaccess позволяет это), так и методику WHERE EXISTS / IN с ошибками.
Метод Exists удаляет все записи, в которых t1.col4 равен нулю (а не только те, которые совпадают в подзапросе):
DELETE t1.*
FROM t1
WHERE Exists (
SELECT t1.col1, t1.col2, t1.col3
FROM t1
Group by t1.col1, t1.col2, t1.col3
HAVING Count(*) > 1
)
AND t1.col4 Is Null;
Я пробовал несколько итераций техники Inner Join, но все, что я здесь прочитал, говорит о том, что она не поддерживается в Access. Рад опубликовать то, что я пробовал, если это поможет. Я также пытался записать подзапрос в temptable, а затем пытался удалить записи, соответствующие внутреннему соединению.