简体   繁体   中英

MYSQL - GROUP BY 2 COLUMN ORDER BY CREATION DATE

I'm trying to get all results of my table with a GROUP BY on 2 columns and get the last insertions.

"Prices" table :

在此处输入图片说明

My Request :

SELECT DISTINCT p.*
FROM prices p 
JOIN (
SELECT MAX(created_at) as "last_created" 
FROM prices
WHERE station_id = 27210003
GROUP BY station_id, fuel_id) as sub 
ON sub.last_created = p.created_at
WHERE p.station_id = 27210003
GROUP BY p.station_id, p.fuel_id

Results are 3 lines but wrong line because not last created in my DB -_-'

在此处输入图片说明

Please help me !!! >_<'

Thx

Since you're selecting a specific station_id in the WHERE clause, you don't need to include that in GROUP BY .

The subquery has to return the columns you're grouping on, and then you have to include them in the ON clause.

And you don't need GROUP BY in the outer query, since the JOIN should ensure that there's just one row for each fuel_id (unless there are duplicate created_at for the same fuel_id and station_id ).

SELECT DISTINCT p.*
FROM prices p 
JOIN (
    SELECT fuel_id, MAX(created_at) as "last_created" 
    FROM prices
    WHERE station_id = 27210003
    GROUP BY fuel_id) as sub 
ON sub.last_created = p.created_at AND sub.fuel_id = p.fuel_id
WHERE p.station_id = 27210003

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM