연락처를 회사에 연결하는 테이블이 있습니다. 연락처가 하나 이상 추가되면 "기본"또는 "보조"연락처를 설정하는 옵션이 있습니다. 그러나 사람들이 연락처를 추가 할 때이 기능을 사용하지 않았습니다. 프로그램이 수정되어 회사에 추가 된 첫 번째 연락처가 기본으로 표시되지만 이미 입력 된 데이터는 수정되지 않습니다.SQL : 열을 기준으로 고유 한 행 업데이트
나는이 테이블을 폴링하고 CompanyID 당 하나의 레코드 만있는 경우 PrimaryContact를 true로 설정하지만이 작업을 수행하는 방법을 알 수는 없다고 말합니다. 할당 된 연락처가 둘 이상있는 회사의 경우 아무 것도하고 싶지 않습니다. 예 :
CompanyID ContactID PrimaryContact
1 285 0
2 375 0
3 761 0
4 1744 0
4 2301 0
6 335 0
6 4987 0
9 809 0
9 2119 0
10 99 0
11 99 0
위의 예에서 CompanyID 4, 6 및 9에는 여러 항목이 있으므로 필자는이를 만지지 않습니다. 하지만 1, 2, 3, 10 및 11은 단일 항목을 가지므로 PrimaryContact를 해당 행에 대해 1로 설정하려고합니다.
어떻게이 작업을 수행 할 수 있습니까?
update contacts
set PrimaryContact = 1
where CompanyID in (
select CompanyID
from contacts
group by CompanyID
having count(distinct ContactID) = 1
)
문제는 이전의 MySQL로 태그 된 아래의 원래의 대답은 그에게 적응 :
내 이전 쿼리가 잘못, 업데이트 연락처 PrimaryContact = 설정 (C1)이 쿼리를 시도 할 경우 ((SELECT COUNT (1) 연락처 (C2)의 경우 c2.CompanyID에 의해 c2.CompanyID = c1.CompanyID 그룹) > 1, 0, 1) –