mysql에서 중복되는 데이터의 첫번째 데이터와 마지막 데이터에 접근하는 법이 있을까요?

조회수 1236회

예를 들어 오늘 하루 이동경로를 DB에 저장한다고 하였을경우

오늘 하루의 이동 경로를 리스트로 출력하려고 합니다. 여기서 제가 하고 싶은건 모든 이동 경로를 다 출력하는게 아니라 몇시간씩 같은 장소(중복되는 데이터)일 경우에는 전부 다 출력하는게 아니라 중복되는 첫번째 레코드(와 마지막 레코드 값만 출력하고 싶은데 쿼리문을 어떻게 해야할지 조언좀 부탁드리겠습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 첫번째와 마지막을 남기는 예는 아니지만, 첫번째만 남기는 예를 들어보면 일단 임시 테이블을 만들어야 합니다.출처

    CREATE TEMPORARY TABLE duplicates (id int primary key)
    
    INSERT INTO duplicates (id)
        SELECT t1.id
          FROM table t1
          join table t2 on t2.id = t1.id + 1
         WHERE t1.location = t2.location
    

    이렇게 하면 duplicates라는 테이블이 만들어지고, 그 다음에 duplicates에 있는 내용을 원래 테이블에서 지우는 방식으로 하는데요.

    지금 하시려는건 '같은 위치'를 판단하시려는거고, 완전히 같은 위치값은 아닐테니 거리 계산이 필요할거구요. 그렇다면 위경도를 가지고 거리를 계산하는 식을 사용하셔야 하는데 그러려면 별도 메소드 구현이 필요할거고... 해서 그냥 서버에서 처리하시는걸 추천합니다.

    아니면 처음에 클라에서 DB에 값을 올릴때, 그냥 이전과 같은 위치(거리 00m이내)라는걸 판단해서 같은 위치면 값을 다르게 넣을 수도 있을 것 같네요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)