Устранение дубликатов строк в Postgres - PullRequest
2 голосов
/ 20 июля 2009

Я хочу удалить повторяющиеся строки, возвращаемые из запроса SELECT в Postgres

У меня есть следующий запрос

SELECT DISTINCT name FROM names ORDER BY name

Но это как-то не устраняет повторяющиеся строки?

Ответы [ 4 ]

6 голосов
/ 20 июля 2009

PostgreSQL чувствителен к регистру, это может быть проблемой здесь DISTINCT ON может использоваться для поиска без учета регистра (проверено на 7.4)

SELECT DISTINCT ON (upper(name)) name FROM names ORDER BY upper(name);
0 голосов
/ 28 декабря 2016

В Postgres 9.2 и выше вы можете теперь привести столбец к типу CITEXT или даже сделать столбец таким, чтобы вам не приходилось использовать выбор.

SELECT DISTINCT name::citext FROM names ORDER BY name::citext
0 голосов
/ 06 мая 2016

Не забудьте добавить обрезку () на это тоже. В противном случае «Запись» и «Запись» будут рассматриваться как отдельные объекты. Это поначалу причиняло мне боль, мне пришлось обновить свой запрос до:

SELECT DISTINCT ON (upper(trim(name))) name FROM names ORDER BY upper(trim(name));
0 голосов
/ 20 июля 2009

Может быть, что-то с похожими, но разными символами (например, LATIN 'a' / CYRILLIC 'а')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...