Я новичок в использовании запросов T-SQL, и я пытался использовать разные решения, чтобы удалить повторяющиеся строки из большой таблицы (более 270 000 строк). таблица выглядит примерно так:Запрос T-SQL для удаления дубликатов из больших таблиц с использованием соединения
TableA
-----------
RowID int not null identity(1,1) primary key,
Col1 varchar(50) not null,
Col2 int not null,
Col3 varchar(50) not null
Строки для этой таблицы не являются совершенными дубликатами из-за существования поля идентичности RowId. Вторая таблица, что мне нужно присоединиться:
TableB
-----------
RowID int not null identity(1,1) primary key,
Col1 int not null,
Col2 varchar(50) not null
В TableA у меня есть что-то вроде:
1 | gray | 4 | Angela
2 | red | 6 | Diana
3 | black| 6 | Alina
4 | black| 11 | Dana
5 | gray | 4 | Angela
6 | red | 12 | Dana
7 | red | 6 | Diana
8 | black| 11 | Dana
И в TableB:
1 | 6 | klm
2 | 11 | lmi
Второй столбец из TableB (Col1) является внешним ключом внутри TableA (Col2). Мне нужно удалить ТОЛЬКО дубликатов из TableA, в которых Col2 = 6 игнорирует другие дубликаты.
1 | gray | 4 | Angela
2 | red | 6 | Diana
4 | black| 6 | Alina
5 | black| 11 | Dana
6 | gray | 4 | Angela
7 | red | 12 | Dana
8 | black| 11 | Dana
Я попытался с помощью
DELETE FROM TableA a inner join TableB b on a.Col2=b.Col1
WHERE a.RowId NOT IN (SELECT MIN(RowId) FROM TableA GROUP BY RowId, Col1, Col2, Col3) and b.Col2="klm"
, но я все еще получаю некоторые из дублей, что мне нужно удалить.
Каков наилучший способ удаления нечетких повторяющихся строк с помощью соединения?