비즈니스 테이블이 있으며 각 비즈니스에는 최대 3개의 전화번호가 있습니다. 중복된 전화번호를 찾고 싶지만 전화번호가 다른 열에 있기 때문에 기존 GROUP BY
쿼리를 작동 시킬 수 없다고 생각 합니다.
샘플 데이터:
ID | 비즈니스 이름 | 전화_메인 | 전화_모바일 | 전화_무료 |
---|---|---|---|---|
1 | 존스 도넛 | 555-551-5555 | 555-551-5556 | 없는 |
2 | 존스 베이커리 | 555-551-5557 | 555-551-5555 | 없는 |
삼 | 슈퍼베이크! | 555-300-1005 | 없는 | 555-551-5555 |
4 | 식료품 프레드 | 555-223-5511 | 555-334-5555 | 없는 |
이 경우 레코드 1, 2, 3을 동일한 것으로 식별하고 싶습니다. 전화 번호 555-551-5555를 중복된 번호로 식별하는 것만으로도 하위 쿼리를 수행하거나 호출 프로그램이 전화 번호를 사용하고 555-551-5555가 있는 모든 레코드를 가져오는 새 쿼리를 보낼 수 있기 때문에 괜찮을 것입니다. 3개의 전화 열 중.
중요한 경우 MariaDB에 있습니다.
편집, (누군가가 정말로 그것을 원하는 것 같기 때문에 나의 현재 흔들리는 시도를 추가 함):
지금 가지고 있는 것은 다음과 같습니다.
SELECT ID, phone_main, phone_mobile, phone_tollfree
(
SELECT COUNT(*) FROM businesses b
WHERE (
phone IS NOT NULL AND (b.phone_mobile=phone OR b.tollfree=phone )
)
OR (
phone_mobile IS NOT NULL AND (b.phone=phone_mobile OR b.phone_tollfree=phone_mobile)
)
OR (
phone_tollfree IS NOT NULL AND (b.phone=phone_tollfree OR b.phone_mobile=phone_tollfree)
)
) cnt
from business HAVING cnt > 1
이것의 문제점:
모든 전화 열을 하나로 통합한 다음 반복 횟수를 계산하는 것은 어떻습니까?
나는 코드를 실행하지 않았지만 당신에게 방향을 줄 수 있습니다 ... :
SELECT phone, COUNT(phone)
FROM (
SELECT phone_main as phone FROM SampleData
UNION ALL
(SELECT phone_mobile as phone FROM SampleData
ORDER BY City;
UNION ALL
SELECT phone_tollfree as phone FROM SampleData
ORDER BY City; and )
)
GROUP BY phone
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다