2017-01-31 4 views
-1

У меня есть таблица Person (id, email, phone, firstName), где электронная почта и телефон должны быть уникальными. Если у меня есть пример (1, «[email protected]», null, «test»), и я пытаюсь добавить новую строку с одинаковыми данными, это вызовет проблему из-за уникальной электронной почты столбца. Можно ли понять, какой столбец вызывает дублируемую проблему с электронной почтой или телефоном (в этой ситуации запрос должен возвращать столбец электронной почты).MySQL получить дубликаты (уникальные) строки

+1

сообщение об исключении указывает, какой столбец нарушает уникальный constrait – e4c5

+1

Я думаю, что если вы используете уникальные ограничения и называете ограничение, то MySQL вернет имя нарушенного ограничения. –

+0

Он возвращается в исключение, но возможно ли быть возвращено как возвращаемое значение запроса? – user5783530

ответ

0

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

Select A.* 
FROM Data_That_Could_Violate_Your_Constraint A 
INNER JOIN Person B 
ON(A.phone=B.phone or A.firstName = B.firstName) 

Это вернет все записи, которые нарушают ваши Constraint на вставке, так как они одни и те же значения в phone, firstName или обоих.

Смежные вопросы