printf
10
2019-04-18 18:26:33 작성 2019-04-18 18:27:16 수정됨
7
220

mysql 쿼리질문 드려요


아래 DB테이블이 있는데요



여기서 use_history_id 와 use_type 이 같으면서 time_stamp가 최신인 값을 가져오고 싶습니다.


아래 쿼리를 쓰면
select * from (select * from history_bike_use_detail_info where use_type = 2 order by time_stamp asc) A group by use_type, use_history_id




최신값이 아닌 것을 가져오네요 해결방법좀알려주세요





0
0
  • 답변 7

  • 사는게힘듭니다
    2019-04-18 18:53:17

    여기서 use_history_id 와 use_type 이 같으면서라 하셨는데 

    같은게 없는데요?

    0
  • 사는게힘듭니다
    2019-04-18 18:55:33

    use_history_id는 PK칼럼일거같고

    use_type은 FK칼럼인가요?



    0
  • 사는게힘듭니다
    2019-04-18 19:00:25

    select

        use_history_id,

        latitude,

        longitude,

        use_type,

        station_id,

        use_result,

        max(time_stamp),

        error_type

    from 

        table

    where

        use_history_id = use_type

    group by

    그룹함수미적용컬럼

    0
  • printf
    10
    2019-04-18 19:54:23

    use_result 가 2이고 time_stamp가 16:59:11 인값을 가져오고 싶습니다. 16:20:43 꺼 말구용

    0
  • 사는게힘듭니다
    2019-04-18 20:32:25

    Max 함수를쓰시면돼요. 그럼 최신값(날짜는최대값이겠죠)를 가져옵니다

    0
  • ddeedd
    947
    2019-04-18 20:33:48

    SELECT *

    FROM 테이블명

    WHERE

      use_history_id = use_type 

    ORDER BY time_stamp DESC 


    걍 이렇게 치면되는거아닌가염


    0
  • BK
    694
    2019-04-19 03:37:19

    최신값을 구하려면 ASC가 아니라 DESC로 정렬 해야 하지 않나요?

    
    WITH
      ranked
      AS
      (
        SELECT
          *,
          RANK() OVER(PARTITION BY use_type, use_history_id ORDER BY time_stamp DESC) AS Rank
        FROM history_bike_use_detail_info
        WHERE use_type = 2
      )
    SELECT *
    FROM ranked
    WHERE Rank = 1


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