Sort data (order by) before group by in mysql

后端 未结 4 1944
说谎
说谎 2021-01-22 08:54

I want to group below data from sub_prd_id. but before that i need order data from max created_at.

I wrote query as below.

4条回答
  •  谎友^
    谎友^ (楼主)
    2021-01-22 09:33

    Query (will always work but is slower than other query):

    SQLFIDDLEExample

    SELECT t1.*
    FROM prd_data t1
    WHERE t1.id = (SELECT t2.id
                   FROM prd_data t2
                   WHERE t2.sub_prd_id= t1.sub_prd_id
                   ORDER BY t2.created_at DESC
                   LIMIT 1)
    

    Other Query (will work only if sub_prd_id has one MAX value):

    SELECT t1.*
    FROM prd_data t1
    WHERE t1.created_at = (SELECT MAX(t2.created_at)
                           FROM prd_data t2
                           WHERE t2.sub_prd_id= t1.sub_prd_id)
    

    Result:

    | ID |      NAME | SUB_PRD_ID |                   CREATED_AT |
    --------------------------------------------------------------
    |  4 |     Grape |         10 | April, 28 2013 03:11:55+0000 |
    |  6 |    Banana |         11 | April, 28 2013 03:23:14+0000 |
    |  7 | Pineapple |         12 | April, 28 2013 03:23:44+0000 |
    

提交回复
热议问题