Oracle, как отфильтровать повторяющиеся данные строки?

В таблице более 30 столбцов и много повторяющихся данных строк, например:

col_1  col_2  col_3
1      2      2
2      3      2
1      2      2
3      2      2
1      2      2
2      3      2
3      2      2

Я хочу выбрать все данные и отфильтровать эти повторяющиеся строки, после фильтрации результат

col_1  col_2  col_3
1      2      2
2      3      2
3      2      2

Я обнаружил, что DISTINCT и GROUP BY работают, но мне нужно ввести много имен столбцов. Есть ли более простые методы?


person GoingMyWay    schedule 22.10.2017    source источник
comment
Возможный дубликат Как мне (или я могу ) SELECT DISTINCT для нескольких столбцов?   -  person Hong Van Vit    schedule 23.10.2017
comment
@HồngVănVít, ответы по предоставленной вами ссылке у меня не работают, distinct * это то, что мне нужно.   -  person GoingMyWay    schedule 23.10.2017


Ответы (2)


Самый простой способ

select distinct * from table

or

select distinct col_1, col_2, col_3 from table
person Przemo    schedule 22.10.2017

Добавляя к ответу @Przemo, вам лучше использовать select distinct * from table,

Аналогичным образом вы можете использовать select unique * from table

Укажите DISTINCT или UNIQUE, если вы хотите, чтобы база данных возвращала только одну копию каждого выбранного набора повторяющихся строк.

Но не в группе,

Группу по нельзя использовать с *. Вы должны указывать имена столбцов< /а>:

СГРУППИРОВАТЬ ПО {имя-столбца [, имя-столбца]*

имя_столбца должно быть столбцом из текущей области запроса.

person user7294900    schedule 22.10.2017
comment
Привет, как я могу улучшить производительность DISTINCT, так как есть более 100 000 000 строк, для получения результата требуется много времени. - person GoingMyWay; 22.10.2017
comment
Производительность - это другой вопрос, который вам нужно добавить в таблицу и объяснить план... - person user7294900; 22.10.2017
comment
Спасибо, надеюсь, у Oracle есть такой механизм, как MapReduce в Hadoop. - person GoingMyWay; 22.10.2017