Нужно сравнить таблицу саму с собой

  • Автор темы Leon
  • Дата начала
Статус
Закрыто для дальнейших ответов.
L

Leon

#1
Есть такая хорошая команда для удаления дублированных данных Distinct.

Проблема заключается в следующем, есть таблица в ней куча полей с повторяющимеся данными, необходимо удалить повторы, можно задать Distinct не по всем полям а только по которым нужно, чтобы он просмотрел повторы, а остальные данные (поля) просто вывел на экран как и раньше, но в них не сравнивал данные на повторы ???? Надеюсь я понятно объяснил.... :blink:

Или может есть какая альтернатива команде Distinct ??? Спасибо за ответы !
 
B

Barmutik

#2
Напрямую так сделать нельзя .. Вам нужно сделать подзапрос с дистинктом и потом уже слить с основной таблицей для получения только нужных записей...
 
L

Leon

#3
Напрямую так сделать нельзя .. Вам нужно сделать подзапрос с дистинктом и потом уже слить с основной таблицей для получения только нужных записей...
Блин, что-то я попробовал - не получается, суть вроде понял, а вот как это воплотить вопрос, не подскажете как должен быть построен запрос, жел. для Ms Access, был бы оч. презнателен...
 
G

Guest

#4
Может дайте тестовую таблицу, и то, что вы хотите получить.
 
L

Leon

#5
Может дайте тестовую таблицу, и то, что вы хотите получить.
Да тут без таблицы все просто, есть куча полей, ну например

1,2,3,4,5,6,7 ... и т.д., в каждом поле встречаются повторяющиеся данные, при выборе команды Distinct нельзя задать, чтобы он в этом поле работал, а в этом нет.. ну допутим нужно профильтровать данную таблицу на совпадение строк, по полям 1,2,3,4 а поля 5,6,7 не проверялись на совпадения но вывелсиь в прежнем состоянии, в котором они были ??
Эту штуку наверняка можно реализовать как-нибудь с помощью подзапроса обращения таблицы самой к себе, но вот как это записать, вопрос ? :(
 
O
#6
1,2,3,4,5,6,7 ... и т.д., в каждом поле встречаются повторяющиеся данные, при выборе команды Distinct нельзя задать, чтобы он в этом поле работал, а в этом нет.. ну допутим нужно профильтровать данную таблицу на совпадение строк, по полям 1,2,3,4 а поля 5,6,7 не проверялись на совпадения но вывелсиь в прежнем состоянии, в котором они были ??
Эту штуку наверняка можно реализовать как-нибудь с помощью подзапроса обращения таблицы самой к себе, но вот как это записать, вопрос ? :rolleyes:
[/quote]
select 1,2,3,4,5,6,7 from tabl t1
where (1,2,3,4) in (select 1,2,3,4,count(*) from tabl t2
group by 1,2,3,4
having count(*)>1)
order by 1,2,3,4,5
;
 
Статус
Закрыто для дальнейших ответов.