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

问题描述 投票:0回答:1

我有这个查询。

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的最后一条记录,无论时间戳在一个单一的查询?

php mysql mariadb
1个回答
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.shfonctionsagregationmax。):

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

© www.soinside.com 2019 - 2024. All rights reserved.