Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Badhabit Member Откуда: Сообщений: 90 |
Подскажите как удалить из таблицы дубликаты по нескольким полям. Поиском нашел примеры где у строк есть id - это понятно, а если ИД нет? те. есть таблица fld1 fld2 fld3 1 2 3 1 2 5 1 5 3 ключеные поля fld1 и fld2 т.е. должны остаться строки... 1 2 3 1 5 3 т.е. из дубликатов оставлять например первую (хоят можно любую) |
14 мар 17, 16:27 [20294329] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Badhabit, нумеруете и удаляете всё кроме 1... раз в неделю вопрос, гуглить удалить дубликаты |
14 мар 17, 16:29 [20294344] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
WITH T(N) AS (SELECT ROW_NUMBER()OVER(PARTITION BY fld1,fld2 ORDER BY fld3) FROM [таблица]) DELETE T WHERE N>1; |
14 мар 17, 16:34 [20294367] Ответить | Цитировать Сообщить модератору |
Badhabit Member Откуда: Сообщений: 90 |
iap, спасибо большое! теперь осталось понять что такое over(partition by... |
14 мар 17, 17:21 [20294599] Ответить | Цитировать Сообщить модератору |
Dmitry V. Liseev Member [заблокирован] Откуда: Санкт-Петербург Сообщений: 5489 |
В данном случае записи с одинаковым fld1, fld2 будут отсортированы по возрастанию fld3 и пронумерованы. Все номера больше 1 будут удалены. То есть, для каждой группы дубликатов останется запись с наименьшим fld3. |
||
14 мар 17, 18:30 [20294833] Ответить | Цитировать Сообщить модератору |
Badhabit Member Откуда: Сообщений: 90 |
Спасибо! |
||||
14 мар 17, 18:47 [20294889] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Dmitry V. Liseev,
витееватое объяснение сути окна :) |
||
14 мар 17, 18:49 [20294898] Ответить | Цитировать Сообщить модератору |
Кесарь Member Откуда: Сообщений: 463 |
Наоборот очень понятное. |
||
14 мар 17, 18:52 [20294906] Ответить | Цитировать Сообщить модератору |
Badhabit Member Откуда: Сообщений: 90 |
А Ваш вариант?..) |
||||
14 мар 17, 20:38 [20295174] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |