-
Alex_C (17.11.11 08:56) [0]На сколько корректно такое удаление повторов:
ADOCommand1.CommandText := 'DELETE P.* FROM SpotTable P WHERE EXISTS ' +
'(SELECT * FROM SpotTable R WHERE P.DXCall = R.DXCall AND P.BandADIF = R.BandADIF AND P.Id < R.Id)';
Почему спрашиваю: в инете нашел много разных вариантов, есть весьма сложные. Этот же очень простой, и работает корректно. -
Кщд (17.11.11 09:35) [1]корректно, если SpotTable.ID - PK.
-
Alex_C (17.11.11 09:36) [2]
> SpotTable.ID - PK.
Да конечно.
Tks! -
Омлет © (17.11.11 09:48) [3]DELETE T1
FROM SpotTable T1, SpotTable T1
WHERE (T1.DXCall = T2.DXCall) AND (T1.BandADIF = T2.BandADIF) AND (T1.Id > T2.Id) -
Омлет © (17.11.11 09:50) [4]> FROM SpotTable T1, SpotTable T1
fix:FROM SpotTable T1, SpotTable T2 -
Alex_C (17.11.11 09:58) [5]
> DELETE T1
> FROM SpotTable T1, SpotTable T1
> WHERE (T1.DXCall = T2.DXCall) AND (T1.BandADIF = T2.BandADIF)
> AND (T1.Id > T2.Id)
Ошибка: необходимо указать таблицу, из которой происходит удаление. -
Anatoly Podgoretsky © (17.11.11 11:16) [6]Не корректно!
Их просто быть не должно, ни в каком случае