2017-06-15 62 views
0

我想通过2列的GROUP BY获取我的表的所有结果并获取最后一次插入。MYSQL - GROUP BY 2 COLUMN ORDER BY创建日期

“价格” 表:

enter image description here

我的要求:

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 

结果是3线,但错了行,因为不是我的数据库最后创建-_-”

enter image description here

请帮帮我!!! > _ <'

THX

回答

2

既然你的WHERE子句中选择特定station_id,你并不需要包括在GROUP BY

子查询必须返回要分组的列,然后必须将它们包含在ON子句中。

而且你不需要GROUP BY在外部查询,因为JOIN应确保有只有一行每个fuel_id(除非有相同fuel_idstation_id重复created_at)。

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 
+0

似乎不太可能有不止一个,但我们走了。 – Strawberry

+0

如果可以的话,您不仅需要使用'GROUP BY fuel_id',还需要另一列'MAX'或'MIN'来选择您想要的。 – Barmar