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 이 높은 순으로 붙겠네요.
distinct 자체가 중복 제거하며 group by 와 같은 로직을 탑니다만,
구조적인 차이는 distinct 의 경우에는 정렬된 결과가 아니라서
요구하신 방향대로 안나올 가능성이 큽니다.
이 경우에는 group by 로 사용하는게 좋습니다.
답변을 작성하시기 전에 로그인 해주세요.