获取每个ID的最新记录

时间:2020-06-11 10:56:16

标签: php mysql mariadb groupwise-maximum

我有这个查询:

SELECT  Truck.Name AS name,
        timestamp,
        oil,
        diesel,
        cargo,
        Truck.notes AS Remarks

        FROM trip
        INNER JOIN Truck USING (idTruck)
        WHERE idTruck IN('2','4','5','6','7','8','9','11','12','13','14','15','16')
        ORDER BY name, timestamp DESC

返回ID的所有记录 我当时在考虑将CURDATE用作

AND DATE(timestamp) = CURDATE()

为了获得最后的记录,但是当一天中没有修改记录时(通常是 有时不是这种情况)我正在丢失记录。不管单个查询中的时间戳如何,我将如何修改查询以获取每个idTruck的最后一个条目?

1 个答案:

答案 0 :(得分:0)

我建议您使用sql的MAX函数来获取最后一条记录( MAX(Truck.Name)):

SELECT  MAX(Truck.Name) AS name,
        timestamp,
        oil,
        diesel,
        cargo,
        Truck.notes AS Remarks

FROM trip
INNER JOIN Truck USING (idTruck)
WHERE idTruck IN('2','4','5','6','7','8','9','11','12','13','14','15','16')
ORDER BY name, timestamp DESC

获取每个ID的最后一条记录:

SELECT  MAX(Truck.Name) AS name,
        timestamp,
        oil,
        diesel,
        cargo,
        Truck.notes AS Remarks

FROM trip
INNER JOIN Truck USING (idTruck)
WHERE idTruck IN('2','4','5','6','7','8','9','11','12','13','14','15','16')
GROUP BY idTruck 
ORDER BY name, timestamp DESC

因为根据sql.sh(https://sql.sh/fonctions/agregation/max):

聚合函数MAX()允许返回a的最大值 记录集中的列。该功能可以应用于数字或 字母数字数据。例如,可以搜索最多的 网上商店的桌子上的昂贵产品。

相关问题