powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как удалить повторяющиеся строки?
12 сообщений из 12, страница 1 из 1
Как удалить повторяющиеся строки?
    #32413282
igoro1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как удалить повторяющиеся строки?
У меня есть строки, встречающиеся по 3-4 раза в таблице.
Мне нужно удалить их, но оставить разумеется по одному экземпляру.
Как это сделать?

автор
select email, count(email)
from club_members
group by email
having count(email) > 1


Так я получаю, какой e-mail повторяется и количество раз.
А как теперь удалить?

Спасибо.
...
Рейтинг: 0 / 0
Как удалить повторяющиеся строки?
    #32413291
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перекачайте данные без повторов в другую таблицу, удалите все из основной и закачайте данные обратно. И не забудьте повесить UNIQUE CONSTRAINT на поле email.
...
Рейтинг: 0 / 0
Как удалить повторяющиеся строки?
    #32413307
McMurfy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в таблице есть ключ (скажем, Id_Member), то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT Min(Id_Member) As Min_Id,EMail
Into #Temp
FROM club_members  
GROUP BY EMail

DELETE club_members 
FROM Club_Members CM INNER JOIN #Temp T On CM.EMail = T.EMail
         And CM.Id_Member > T.Min_Id


Кажется...
...
Рейтинг: 0 / 0
Как удалить повторяющиеся строки?
    #32413325
Aleksey777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если есть уникальный ID то тогда так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare @t1 table (id int, email char( 20 ))

insert into @t1
select  1 ,'a@b.ru' union all
select  2 ,'a@b.ru' union all
select  7 ,'a@b.ru' union all
select  3 ,'c@b.ru' union all
select  4 ,'d@b.ru' union all
select  8 ,'d@b.ru' union all
select  5 ,'e@b.ru' union all
select  6 ,'a@b.ru'

select email, count(email) 
from @t1 
group by email 
having count(email) >  1 

delete @t1
from @t1 b
where id <> (select top  1  a.id from @t1 a where a.email = b.email order by a.id)
...
Рейтинг: 0 / 0
Как удалить повторяющиеся строки?
    #32413369
stone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если есть уникальный ID

Код: plaintext
1.
delete from TableName from TableName h where exists (select ID from 
TableName where ID < h.ID)
...
Рейтинг: 0 / 0
Как удалить повторяющиеся строки?
    #32413372
stone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь вот так
Код: plaintext
1.
delete from TableName from TableName h where exists (select ID from 
TableName where email = h.email and ID < h.ID)
...
Рейтинг: 0 / 0
Как удалить повторяющиеся строки?
    #32413490
igoro1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воспользовался советом ston-а.
Супер!!!
Спасибо!!!
Записал в полезные советы...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как удалить повторяющиеся строки?
    #36584489
YuriLaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Небольшая поправка, повторили два раза FROM в DELETE.

Правильно будет так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
delete from TableName h 
where exists 
(select ID from TableName 
where email = h.email 
and ID < h.ID)
 
 
...
Рейтинг: 0 / 0
Как удалить повторяющиеся строки?
    #36584500
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuriLazНебольшая поправка, повторили два раза FROM в DELETE.

Правильно будет так:
Код: plaintext
1.
2.
3.
4.
delete from TableName h 
where exists 
(select ID from TableName 
where email = h.email 
and ID < h.ID)
Это не ошибка, а вполне корректный синтаксис для MSSQL:
BOLDELETE
[ TOP ( expression ) [ PERCENT ] ]
[ FROM ]
{ <object> | rowset_function_limited
[ WITH ( <table_hint_limited> [ ...n ] ) ]
}
[ <OUTPUT Clause> ]
[ FROM <table_source> [ ,...n ] ]
[ WHERE { <search_condition>
| { [ CURRENT OF
{ { [ GLOBAL ] cursor_name }
| cursor_variable_name
}
]
}
}
]
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как удалить повторяющиеся строки?
    #38751008
negof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--Можно так
SELECT DISTINCT
UNID,
UN_NAME,
SALE_COND,
SBCHANNELID,
SBCHANNEL_NAME,
BU_ID2,
BU_NAME2,
BU_ID1,
BU_NAME1,
COMP_ID,
COMP_NAME
INTO dbo.On_tmp
FROM dbo.On
TRUNCATE TABLE dbo.On
INSERT INTO dbo.On
SELECT * FROM dbo.On_tmp
DROP TABLE dbo.On_tmp
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как удалить повторяющиеся строки?
    #39128190
Dimbuch®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
    DELETE a
    FROM
    (
        SELECT
            row_num = ROW_NUMBER() OVER (PARTITION BY cm.email ORDER BY cm.email)
        FROM club_members cm
    ) a
    WHERE a.row_num > 1
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как удалить повторяющиеся строки?
    #40091742
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimbuch®
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
    DELETE a
    FROM
    (
        SELECT
            row_num = ROW_NUMBER() OVER (PARTITION BY cm.email ORDER BY cm.email)
        FROM club_members cm
    ) a
    WHERE a.row_num > 1



Гениально!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как удалить повторяющиеся строки?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]