MySQL查詢去重,保留某個字段最大值的記錄

目標:根據子級的最新數據來查詢5條父級數據。


1、首先:查詢出所有符合的相關數據。

SELECT Q.id , Q.pid FROM Q LEFT JOIN P ON P.id=Q.pid WHERE P.XXOO=... AND Q.XXOO...;

2、其次:自鏈接查詢。

#SELECT A.* FROM A LEFT JOIN B ON A.XXOO = B.XXOO AND A.id < B.id WHERE B.id IS NULL;
SELECT A.* FROM A LEFT JOIN B ON A.XXOO = B.XXOO AND A.id < B.id WHERE B.id IS NULL ORDER BY A.id DESC LIMIT 5;

3、最後:組裝sql查詢。

    SELECT
        A.* 
    FROM
        (SELECT
            Q.id ,
            Q.pid 
        FROM
            Q 
        LEFT JOIN
            P 
                ON P.id=Q.pid 
        WHERE
            P.XXOO=... 
            AND Q.XXOO...) AS A 
    LEFT JOIN
        (
            SELECT
                Q.id ,
                Q.pid 
            FROM
                Q 
            LEFT JOIN
                P 
                    ON P.id=Q.pid 
            WHERE
                P.XXOO=... 
                AND Q.XXOO...
        ) AS B 
            ON A.XXOO = B.XXOO 
            AND A.id < B.id 
    WHERE
        B.id IS NULL 
    ORDER BY
        A.id DESC LIMIT 5;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章