Дублирующее значение в таблице postgresql - PullRequest
3 голосов
/ 16 января 2010

Я пытаюсь изменить таблицу в моей базе данных PostgreSQL, но там написано, что есть дубликат! Каков наилучший способ найти дублирующее значение в таблице? вроде запрос на выбор?

Ответы [ 3 ]

14 голосов
/ 16 января 2010

Попробуйте как это

SELECT count(column_name), column_name 
from table_name 
group by column_name having count(column_name) > 1;
2 голосов
/ 16 января 2010

Если вы попытаетесь изменить значение в столбце, который является частью PRIMARY KEY или имеет ограничение UNIQUE, и получите эту ошибку там, то вы сможете найти конфликтующую строку с помощью

SELECT *
FROM your_table
WHERE conflicting_column = conflicting_value;

Если тип переменной - это тип символов, заключите его в одинарные кавычки (').

РЕДАКТИРОВАТЬ: Чтобы узнать, на какие столбцы влияет ограничение, проверьте этот пост .

0 голосов
/ 16 января 2010

Прежде всего, определите, какие поля в вашей таблице должны быть уникальными. Это может быть что-то, помеченное как первичный ключ, уникальный индекс, основанный на одном или нескольких полях, или проверочное ограничение, опять же на основе одного или нескольких полей.

Как только вы это сделаете, посмотрите, что вы пытаетесь вставить, и выясните, не нарушает ли оно какое-либо из уникальных правил.

И да, операторы SELECT помогут вам определить, что здесь не так. Используйте их, чтобы определить, можете ли вы зафиксировать строку.

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