programing

한 열에서 고유한 열을 선택하고 다른 모든 열을 반환합니다.

powerit 2023. 7. 22. 10:30
반응형

한 열에서 고유한 열을 선택하고 다른 모든 열을 반환합니다.

저는 수정된 날짜를 기준으로 명확한 주문을 찾고 있습니다.저는 그것을 분류하고 최근에 수정된 주문을 찾고 싶습니다.

나는 postgre에서 처럼 하려고 노력했습니다.SQL.select distinct on (orders) * from the table하지만 이것은 마리아의 경우에 오류를 던집니다.DB

Orders          Modified Date
------          ---------------
23031185    2019-09-24 19:36:51
23031185    2019-09-24 22:01:57
23031185    2019-09-24 19:32:28
23031185    2019-09-24 19:33:25
23031185    2019-09-24 19:33:18



The expected output should be the latest one 

Orders          Modified Date
------          ---------------
23031185    2019-09-24 22:01:57

다른 칼럼도 있습니다.주문 열을 기준으로 다른 모든 열과 구별되는 모든 행을 가져와야 합니다.

최신 버전의 MariaDB에서는 다음을 사용할 수 있습니다.ROW_NUMBER()내림차순으로 기록의 순위를 매기다modified_date같은 것을 공유하는 그룹 내에서.orders그런 다음 그룹별 최상위 레코드를 필터링합니다.

SELECT *
FROM (
    SELECT
        t.*,
        ROW_NUMBER() OVER(PARTITION BY orders ORDER BY modified_date DESC) rn
    FROM mytable t
) x
WHERE rn = 1

이전 버전에서는 다음과 함께 상관된 하위 쿼리를 사용할 수 있습니다.NOT EXISTS조건:

SELECT *
FROM mytable t
WHERE NOT EXISTS (
    SELECT 1
    FROM mytable t1
    WHERE t1.orders = t.orders AND t1.modified_date > t.modified_date
)

또는 하위 쿼리를 사용하여 그룹당 최대 날짜를 반환하고 가입할 수 있습니다.

SELECT *
FROM mytable t
WHERE modified_date = (
    SELECT MAX(t1.modified_date)
    FROM mytable t1
    WHERE t1.orders = t.orders
)

단순합니까?

SELECT  Orders,
        MAX(Modified Date) AS LatestDate
    FROM table
    GROUP BY Orders;

언급URL : https://stackoverflow.com/questions/58227633/select-distinct-on-one-column-and-return-all-other-columns

반응형