taminhh Ответов: 2

Простой способ удалить дубликаты записей в SQL?


как я могу удалить все дубликаты записей из 4 столбцов в 4 разных таблицах и сохранить одну из них как оригинальную(не имеет значения, какую именно)
кроме того, мои столы довольно большие, так что я бы предпочел не присоединяться к ним внутренне.


Что я уже пробовал:

я пробовал внутреннее соединение столов, но это занимает много времени.

NithyaKumarJai

объединение это лучший способ другие мудрые попытки для разбиения на основе номера строки

2 Ответов

Рейтинг:
0

OriginalGriff

Хавер ты смотрел на SQL SELECT DISTINCT оператор[^]


taminhh

чтобы использовать DISTINCT, я должен присоединиться к таблицам. но поскольку таблицы очень большие,что займет много времени, я ищу способ удалить их без какого-либо соединения.

Рейтинг:
0

CHill60

В дополнение к вашему комментарию к решению 1... в качестве альтернативы вы можете использовать СОЮЗ (Transact-SQL) - SQL Server | Microsoft Docs[^]
Обратите внимание, что UNION ALL выбирает все строки, но UNION удалит дубликаты для вас, например, с помощью этих простых тестовых данных

declare @table1 table (col1 int, col2 int, col3 int, col4 int)
insert into @table1 (col1, col2,col3,col4) values
(1,2,3,4),(2,3,4,5),(3,4,5,6),(4,5,6,7)

declare @table2 table (col1 int, col2 int, col3 int, col4 int)
insert into @table2 (col1, col2,col3,col4) values
(1,2,3,4),(2,3,4,5),(3,4,5,6),(5,5,6,7)

declare @table3 table (col1 int, col2 int, col3 int, col4 int)
insert into @table3 (col1, col2,col3,col4) values
(1,2,3,4),(2,3,4,5),(3,4,5,6),(4,5,6,8)

declare @table4 table (col1 int, col2 int, col3 int, col4 int)
insert into @table4 (col1, col2,col3,col4) values
(1,2,3,4),(2,3,4,5),(3,4,5,6),(4,5,6,7)
этот запрос
select * from @table1
union all
select * from @table2
union all
select * from @table3
union all
select * from @table4
возвращать результат
col1	col2	col3	col4
1	2	3	4
2	3	4	5
3	4	5	6
4	5	6	7
1	2	3	4
2	3	4	5
3	4	5	6
5	5	6	7
1	2	3	4
2	3	4	5
3	4	5	6
4	5	6	8
1	2	3	4
2	3	4	5
3	4	5	6
4	5	6	7
но
select * from @table1
union
select * from @table2
union
select * from @table3
union
select * from @table4
возвращается
col1	col2	col3	col4
1	2	3	4
2	3	4	5
3	4	5	6
4	5	6	7
4	5	6	8
5	5	6	7
Следующая проблема заключается в том, если у вас есть другие столбцы в этих таблицах, которые вы хотите сохранить, или если вы хотите сохранить 4 таблицы. Если это так, то вам нужно будет предоставить дополнительную информацию - минимум некоторые примеры данных и ожидаемые результаты


NithyaKumarJai

объединение это лучший способ другие мудрые попытки для разбиения на основе номера строки

CHill60

Разбиение по номеру строки будет работать только в том случае, если строки имеют одинаковый номер строки в каждой таблице. Раздел должен был бы использовать четыре столбца, которые дублируются. Чтобы обработать все 4 таблицы, это должно быть сделано на Объединенных таблицах, чего ОП не хочет.