Я хочу удалить повторяющиеся строки, возвращаемые из запроса SELECT в Postgres
У меня есть следующий запрос
SELECT DISTINCT name FROM names ORDER BY name
Но это как-то не устраняет повторяющиеся строки?
PostgreSQL чувствителен к регистру, это может быть проблемой здесь DISTINCT ON может использоваться для поиска без учета регистра (проверено на 7.4)
SELECT DISTINCT ON (upper(name)) name FROM names ORDER BY upper(name);
В Postgres 9.2 и выше вы можете теперь привести столбец к типу CITEXT или даже сделать столбец таким, чтобы вам не приходилось использовать выбор.
SELECT DISTINCT name::citext FROM names ORDER BY name::citext
Не забудьте добавить обрезку () на это тоже. В противном случае «Запись» и «Запись» будут рассматриваться как отдельные объекты. Это поначалу причиняло мне боль, мне пришлось обновить свой запрос до:
SELECT DISTINCT ON (upper(trim(name))) name FROM names ORDER BY upper(trim(name));
Может быть, что-то с похожими, но разными символами (например, LATIN 'a' / CYRILLIC 'а')