sql 질문입니다.

sql 질문입니다.

QA

sql 질문입니다.

본문



SELECT 

            t.OWNER_PHONE, 
            t.SHOP_PHONE, 
            t.MANAGER_PHONE
        FROM
            table AS t

 

이런식으로 쿼리를 썼습니다.

 

여기서 owner_phone, shop_phone, manager_phone가 같을수가 있는데 갔다면 중복이라고 출력하고 싶은데 어떻게 해야할까요?

 

distinct 를 썻엇는데 아예 row가 누락되는것 같앗거든요 도움좀 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 2

저는 이런경우 사용자마다 정보를 가지고 오게 만들고 중복여부를 체크합니다.



SELECT 
    t.OWNER_PHONE, 
    t.SHOP_PHONE, 
    t.MANAGER_PHONE,
    if (t.OWNER_PHONE = t.SHOP_PHONE, 
        if (t.OWNER_PHONE = t.MANAGER_PHONE,
            '전체중복','소유주-샵중복'),
        if(t.SHOP_PHONE = t.MANAGER_PHONE, '샵-매니저중복', '중복없음')
     ) as "중복여부"
FROM
    table AS t

이런형태로 구성하면 

중복여부로 판단할수있습니다. 

위에선 한글로표기했지만, 숫자나 코드로체크하길원하면 변경하면되겠죠

 

distinct 는 여러개의 행을 하나로 출력합니다.

님이 원하는 중복이라는 걸 표시하려면 group by 를 써야 합니다.


SELECT t.OWNER_PHONE, t.SHOP_PHONE, t.MANAGER_PHONE, count(*) as cnt
FROM table AS t
GROUP BY t.OWNER_PHONE, t.SHOP_PHONE, t.MANAGER_PHONE

해서 cnt 가 1 이상인 경우는 중복인거죠

 

답변을 작성하시기 전에 로그인 해주세요.
전체 306
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT