Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / двойные записи / 12 сообщений из 12, страница 1 из 1
16.04.2003, 18:02
    #32142536
Olesja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
Подскажите пожалуйста как найти двойные записи(дубли) в таблице?
...
Рейтинг: 0 / 0
16.04.2003, 18:11
    #32142545
Olesja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
помогите очень надо
...
Рейтинг: 0 / 0
16.04.2003, 18:14
    #32142551
_kozyr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
Если надо удалить дубли:

Код: plaintext
1.
delete from tab 
where rowid not in (select max(rowid) from tab group by col1,col2,..colN)


Если найти

Код: plaintext
1.
2.
3.
select *
from tab
group by col1,col2,..colN
having count(*) >  1 


В Group BY ключевые столбцы таблицы
...
Рейтинг: 0 / 0
16.04.2003, 18:19
    #32142558
Olesja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
Чего-то не получается
...
Рейтинг: 0 / 0
16.04.2003, 18:25
    #32142567
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
proba2@sql>;create table test_1 (id int);

Table created.

proba2@sql>;insert into test_1 values(1);

1 row created.

proba2@sql>;/

1 row created.

proba2@sql>;/

1 row created.

proba2@sql>;/

1 row created.

proba2@sql>;/

1 row created.

proba2@sql>;ed
Wrote file afiedt.buf

1* insert into test_1 values(2)
proba2@sql>;/

1 row created.

proba2@sql>;/

1 row created.

proba2@sql>;/

1 row created.

proba2@sql>;ed
Wrote file afiedt.buf

1* insert into test_1 values(3)
proba2@sql>;/

1 row created.

proba2@sql>;/

1 row created.

proba2@sql>;/

1 row created.

proba2@sql>;ed
Wrote file afiedt.buf

1* insert into test_1 values(5)
proba2@sql>;/

1 row created.

proba2@sql>;/

1 row created.

proba2@sql>;/

1 row created.

proba2@sql>;/

1 row created.

proba2@sql>;select * from test_1;

ID
----------
1
1
1
1
1
2
2
2
3
3
3
5
5
5
5

15 rows selected.

proba2@sql>;select id, count(*) from test_1 group by id having count(*)>1;

ID COUNT(*)
---------- ----------
1 5
2 3
3 3
5 4

proba2@sql>;exit
...
Рейтинг: 0 / 0
16.04.2003, 18:25
    #32142568
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
А так?

Код: plaintext
select field_to_check, count(*) from table group by field_to_check having count(*) >  1 ;


Вопрос к экспертам:

А почему не работает таким образом?

Код: plaintext
select field_to_check, count(*) from table group by field_to_check having p >  1 ;
...
Рейтинг: 0 / 0
16.04.2003, 18:27
    #32142569
_kozyr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
create table tab(a number, b number, c number);

insert into tab values( 1 , 1 , 1 );
insert into tab values( 2 , 2 , 2 );
insert into tab values( 3 , 3 , 3 );

REM Дублируем
insert into tab
select * from tab;

insert into tab
select * from tab;
commit;

REM Находим дубли
select * 
from tab
group by a,b,c
having count(*) >  1 

REM Чистим дубли
delete from tab
where rowid not in (select max(rowid) from tab group by a,b,c);

select * from tab;
...
Рейтинг: 0 / 0
16.04.2003, 18:29
    #32142572
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
Ой извиняюсь, то есть

select field_to_check, count(*) p from table group by field_to_check having p > 1;

ORA-00904: invalid column name
...
Рейтинг: 0 / 0
16.04.2003, 18:30
    #32142574
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
to Violina:

... having p > 1;

Ne mogu poniati pocemu 'p' a ne ...
...
Рейтинг: 0 / 0
16.04.2003, 18:38
    #32142586
Olesja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
thanks everybody
...
Рейтинг: 0 / 0
16.04.2003, 18:57
    #32142603
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
Код: plaintext
The alias can be used in the ORDER BY clause, but not other clauses in the query.
...
Рейтинг: 0 / 0
17.04.2003, 13:07
    #32143043
Alexandr Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойные записи
Задача уже академическая (не двойные, а все повторяющиеся) и решений много, но самое
изящное вроде
Delete from Tabl where rowid not in (
select max(rowid) from Tabl
group by col1, col2, col3);
col1,col2 ... - поля, где нужно устранить одинаковые значения
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / двойные записи / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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