Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Уникальный индекс не создается, хотя повторов нет  [new]
BERSERC
Member

Откуда:
Сообщений: 442
Пытаюсь создать уникальный индекс на 5 столбцах таблицы.
Пишется ошибка что The duplicate key value is( ...)
делаю поиск в таблице по указанным в ошибке значениям (и даже по части их) и не нахожу этих данных. Похоже они раньше были в таблице, но потом были удалены.


Что это может быть за мистика?
14 янв 16, 12:58    [18677731]     Ответить | Цитировать Сообщить модератору
 Re: Уникальный индекс не создается, хотя повторов нет  [new]
Glory
Member

Откуда:
Сообщений: 104751
BERSERC
Что это может быть за мистика?

Это мистика называется - кто-то не проверил наличие дубликатов
14 янв 16, 12:59    [18677746]     Ответить | Цитировать Сообщить модератору
 Re: Уникальный индекс не создается, хотя повторов нет  [new]
BERSERC
Member

Откуда:
Сообщений: 442
Поиск делаю так
delete Table1
where r_id in (

select min(ID) from Table1
group by col1,col2,col3,col4,col5
having count(*) > 1
)
14 янв 16, 13:00    [18677752]     Ответить | Цитировать Сообщить модератору
 Re: Уникальный индекс не создается, хотя повторов нет  [new]
BERSERC
Member

Откуда:
Сообщений: 442
delete Table1
where ID in (

select min(ID) from Table1
group by col1,col2,col3,col4,col5
having count(*) > 1
)
14 янв 16, 13:01    [18677757]     Ответить | Цитировать Сообщить модератору
 Re: Уникальный индекс не создается, хотя повторов нет  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37202
BERSERC
Поиск делаю так
delete Table1
where r_id in (

select min(ID) from Table1
group by col1,col2,col3,col4,col5
having count(*) > 1
)
Т.е. вы нашли, удалили, а потом не можете повторно найти?
14 янв 16, 13:01    [18677760]     Ответить | Цитировать Сообщить модератору
 Re: Уникальный индекс не создается, хотя повторов нет  [new]
Glory
Member

Откуда:
Сообщений: 104751
select  col1,col2,col3,col4,col5 from Table1
group by col1,col2,col3,col4,col5
having count(*) > 1
14 янв 16, 13:01    [18677761]     Ответить | Цитировать Сообщить модератору
 Re: Уникальный индекс не создается, хотя повторов нет  [new]
BERSERC
Member

Откуда:
Сообщений: 442
BERSERC,

все, разобрался, реально я криво дубликаты удалил.
14 янв 16, 13:03    [18677769]     Ответить | Цитировать Сообщить модератору
 Re: Уникальный индекс не создается, хотя повторов нет  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
BERSERC
delete Table1
where ID in (

select min(ID) from Table1
group by col1,col2,col3,col4,col5
having count(*) > 1
)



то есть, при наличии дубликатов вы удаляете их все, не оставляя ни одного?
14 янв 16, 13:03    [18677776]     Ответить | Цитировать Сообщить модератору
 Re: Уникальный индекс не создается, хотя повторов нет  [new]
BERSERC
Member

Откуда:
Сообщений: 442
Glory,Спасибо!
14 янв 16, 13:04    [18677778]     Ответить | Цитировать Сообщить модератору
 Re: Уникальный индекс не создается, хотя повторов нет  [new]
iap
Member

Откуда: Москва
Сообщений: 47066
BERSERC,

WITH CTE(N) AS (SELECT ROW_NUMBER()OVER(PARTITION BY col1,col2,col3,col4,col5 ORDER BY ID) FROM Table1)
DELETE CTE WHERE N>1;
14 янв 16, 13:21    [18677950]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить