2017-01-31 2 views
-1

전자 메일과 전화가 고유해야하는 Person (id, email, phone, firstName) 테이블이 있습니다. 예를 들어 (1, "[email protected]", null, "test"), 동일한 데이터가있는 새 행을 추가하려고하면 고유 한 열 전자 메일 때문에 문제가 발생합니다. 어떤 열이 중복 된 문제 전자 메일 또는 전화를 일으키는 지 이해할 수 있습니까 (이 경우 쿼리는 전자 메일 열을 반환해야 함).MySQL은 중복 된 (고유 한) 행을 얻습니다.

+1

고유 한 constrait을 위반하는 열을 예외 메시지가 알려줍니다. – e4c5

+1

고유 한 제약 조건을 사용하고 제약 조건의 이름을 지정하면 MySQL은 위반 된 제약 조건의 이름을 반환합니다. –

+0

예외에서 반환되었지만 쿼리의 반환 값으로 반환 할 수 있습니까? – user5783530

답변

0

다른 테이블의 데이터를 삽입 할 때 고유 한 제약 조건을 위반하는 모든 행을 찾기 위해 먼저 두 테이블을 조인 할 수 있습니다. 그들은 phone, firstName 또는 두 가지 모두에 같은 값을 공유하기 때문에

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

은 삽입에 제약 조건을 위반하는 모든 레코드를 반환합니다.

관련 문제