Php 获取每个ID的最后记录
我有一个疑问:Php 获取每个ID的最后记录,php,mysql,mariadb,groupwise-maximum,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','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的最后一个条目,而不考虑单个查询中的时间戳?我建议您使用sql的MAX函数获取最后一条记录(MAX(Truck.Name)): 获取每个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():
聚合函数MAX()允许返回
记录集中的列。该函数可以应用于数字或数字
字母数字数据。例如,可以搜索
网上商店桌子上的昂贵商品
我建议您使用sql的MAX函数来获取最后一条记录(MAX(Truck.Name)): 获取每个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():
聚合函数MAX()允许返回
记录集中的列。该函数可以应用于数字或数字
字母数字数据。例如,可以搜索
网上商店桌子上的昂贵商品
请看这是一个正在工作的sql提琴:请看这是一个正在工作的sql提琴:它只返回一个idTruck,而不是表中每个idTruck的最后一个。如果可能的话,我想在一个查询中获得我的where子句中所有id的最后一个条目。然后您只需按idTruck添加一个组,如下所示:
选择idTruck,MAX(Truck.Name)作为名称,时间戳,油,柴油,货物,Truck.notes作为来自trip INNER JOIN Truck USING(idTruck)的备注(‘2’、‘4’、‘5’、‘6’、‘7’、‘8’、‘9’、‘11’、‘12’、‘13’、‘14’、‘15’、‘16’)按idTruck按名称分组,时间戳DESC
。等等。如果可以的话,我会更改我的答案。我接受你的答案,但对我的答案稍作更改:我把MAX(时间戳)放在瞧:向下投票,因为它不起作用。GROUP BY
plusMAX
将正确获取每个组的“最后一个”值,但它不会获取与该最大值对应的其余列。然后,您必须将
连接回表,以获取与该最大值对应的其他列。请参见[groupwise maximum]
我添加的标记。@Dadinaks-很抱歉对新手太苛刻了。您对MAX()的评论
很好。但总体答案是一个常见的错误;我不能让它作为被接受和投票的答案。这只会返回一个idTruck,而不是表中每个idTruck的最后一个。如果可能,我希望在单个查询中获得我的where子句中所有id的最后一个条目。然后,您只需按idTruck添加一个组,如这:选择idTruck,MAX(Truck.Name)作为名称、时间戳、油、柴油、货物、Truck.notes作为trip内部连接卡车使用(idTruck)的备注,其中idTruck位于('2'、'4'、'5'、'6'、'7'、'8'、'9'、'11'、'12'、'13'、'14'、'15'、'16')按idTruck ORDER按名称分组,timestamp DESC
。等等。如果可以的话,我会更改我的答案。我接受你的答案,只是稍微更改一下我的答案:I put MAX(timestamp)瞧:向下投票,因为它不起作用。GROUP BY
plusMAX
将正确获取每个组的“最后一个”值,但它不会获取与该最大值对应的其余列。然后,您必须将
连接回表,以获取与该最大值对应的其他列。请参见[groupwise maximum]
我添加的标签。@Dadinaks-很抱歉对新手太苛刻了。你对MAX()
的评论很好。但总体答案是一个常见的错误;我不能让它成为被接受和被投票的答案。