플랑크톤
1k
2020-08-19 04:43:50
6
225

mysql 쿼리문 질문..


이런 쿼리문이 있는데..

아래 결과값에서 세번째 PRODUCTID컬럼을 보시면 66이 2개가 있는데 이 중복되는값을 빼고 결과값을 나오게 하고 싶은데 어떻게 해야 할까요..?


검색해보니까 DISTINCT를 사용한다는데 사용예제에는 *로 하는게 없어서..

-2
0
  • 답변 6

  • 성일
    567
    2020-08-19 04:52:54

     본인이 요구하는걸 명확히 표현하는 단계가 선행되어야 할 것 같네요. id 161, 162 중에 (1) 161이 출력되어야 된다는 건가요 (2) 162가 출력되어야 된다는 건가요 (3) 둘 다 출력되면 안된다는 건가요 (4) 66이라는 값은 한 번만 출력되고 나머지 칼럼은 그대로 출력되어야 된다는 건가요?

  • 플랑크톤
    1k
    2020-08-19 05:17:16

    161 이외에 모든 컬럼이 출력이 되는 결과값을 만들고 싶습니다.

    이런식으로..

  • Eleutherius
    347
    2020-08-19 09:21:08 작성 2020-08-19 09:25:33 수정됨


    161 이외에 모든 컬럼이 출력이 되는 결과값을 만들고 싶습니다.


    컬럼은 BIDNO, MEMBERID, PRODUCTID 등등을 의미하는 용어입니다.

    ROW라는 용어가 맞습니다.


    DISTINCT는 중복된 ROW를 제거하는 키워드 입니다.
    BIDNO가 161인것과 162인것은 다른값이지 중복값이 아님으로 DISTINCT로 제거할 수 없습니다. 161이 출력되어야하는지 162가 출력되어야 하는지 그 조건을 말씀주시면 도움드리기가 더 좋습니다.


    EX)

    1. PRODUCTID가 중복될 경우, 중복된 값 중에 BIDNO가 큰것을 출력.

    2. PRODUCTID가 중복될 경우, 중복된 값 중에 WBDATE가 최신인것을 출력.


    GIGO(garbage-in garbage-out)이라는 용어가 있습니다. 질문이 명확하지 않으면 답변 또한 명확하게 나올 수 없습니다.

  • C#린이
    1k
    2020-08-19 09:40:09

    다른 분들이 의견주신 것처럼

    질문이 명확했으면 하는 생각이 있네요.

    '사용예제' 라는 용어에서 입문자라는 생각이 듭니다.


    실무에서 쓰는 테이블이라면

    PRODUCTID 가 FK 일꺼라 추측되고요.

    동일한 PRODUCTID 에 대해 가장 최근에 저장된 row를

    보여줬으면 하고 질문하신 것 같습니다.


    PRODUCTID 에 대해 MAX(BIDNO) 값 기준으로

    GROUP BY 하셔서 가져오시는게 좋을것 같네요.

  • 성일
    567
    2020-08-19 21:45:01

    좀 더 기초적인 쿼리문 연습/강좌를 더 보셔야 할듯! 사칙연산을 알아야 문제를 풀 수 있습니다. 

    프로그래머스라는 사이트에 있는 쿼리 문제 시리즈가 심플하고 괜찮아요.

  • 플랑크톤
    1k
    2020-08-20 00:07:52

    아.. 감사합니다!

  • 로그인을 하시면 답변 을 등록할 수 있습니다.