mysql 중복된 값은 한번만 출력하기

mysql 중복된 값은 한번만 출력하기

QA

mysql 중복된 값은 한번만 출력하기

본문

검색창에 관한 테이블을 구축했습니다. 

테이블 이름은 search 테이블이고 칼럼명은 auto 가 먹힌 index ,search_word,mb_id,divide, datetime 5개가 있습니다. 

질문입니다. select 문을 사용해서  mb_id 값이 같은 것들을 시간순서대로 뽑아오는데 search_word를 중복없이 뽑아올려고 하고 있습니다. 

 

SELECT DISTINCT search_word FROM g5_search WHERE mb_id = '$mb_id' ORDER BY datetime DESC

 

이 쿼리문을 사용하면 중복된 값이 있으면 전부 제거되어서 출력되어 버리는데 제가 원하는 쿼리문은 중복된 값은 처음 한번만 출력되게 하고 싶습니다. 방법이 있을까요?

 

이 질문에 댓글 쓰기 :

답변 2

group by 로 바꿔보면 결과가 어떤가요?

 

SELECT search_word FROM g5_search WHERE mb_id = '$mb_id' 

group by search_word ORDER BY datetime DESC 

 

정확히 어떤 결과를 원하는지 이해가 잘 안되지만..

그룹으로 묶으면 search_word 는 동일한 키워드끼리 그룹으로 묶여서

한줄만 출력되고 시간은 datetime 이 높은 순으로 붙겠네요.

이 쿼리문을 사용해봤는데 제가 원하는 결과는 아니였습니다 ㅠㅠ 제가 원하는 결과를 좀더 자세히 말씀드리면 만약 제가 검색창에 a, b, c, b, a, d 이런 식으로 6번 검색을 했다면 최신 순으로 a,b,c,d 이렇게 4개가 출력되는 쿼리문이 필요합니다. 중복값은 최초 한번이 필요하죠 ㅠㅠ

distinct 자체가 중복 제거하며 group by 와 같은 로직을 탑니다만,

구조적인 차이는 distinct 의 경우에는 정렬된 결과가 아니라서

요구하신 방향대로 안나올 가능성이 큽니다.

이 경우에는 group by 로 사용하는게 좋습니다.

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

회원로그인

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