【问题标题】:Get last record of each ID获取每个 ID 的最后一条记录
【发布时间】:2020-10-01 00:02:56
【问题描述】:

我有这个问题:

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 groupwise-maximum


【解决方案1】:

建议你使用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 的最大值 记录集中的列。该函数可以应用于数字或 字母数字数据。例如,可以搜索最 网上商店桌子上的昂贵产品。

【讨论】:

  • 这只会带回一个 idTruck 而不是表中每个 idTruck 的最后一个。如果可能,我想在单个查询中获取 where 子句中所有 id 的最后一个条目。
  • 那么您只需要像这样添加 GROUP BY idTruckSELECT idTruck, 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 。等待。如果可以,我会更改答案。
  • 我接受了你的回答,但我稍作改动:我输入了 MAX(timestamp) 和瞧:
  • 投反对票,因为它不起作用GROUP BY 加上 MAX 将正确获取每个组的“最后一个”值,但它不会获取对应于该最大值的其余列。然后,您必须 JOIN 返回表以获取对应于最大值的其他列。请参阅我添加的[groupwise-maximum] 标签。
  • @Dadinaks - 很抱歉对新手很苛刻。您关于MAX() 的cmets 很好。但总体答案是一个常见的错误;我不能让它成为被接受和赞成的答案。
猜你喜欢
  • 2020-04-09
  • 2022-10-14
  • 2011-12-17
  • 2017-02-19
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
相关资源
最近更新 更多