在SQL中使用LAST()聚合函数时出错

时间:2016-05-28 16:16:19

标签: mysql sql database mysqli

最近我开始研究一个项目。我想在其中获取插入数据库的最后一条记录。

查询是:

SELECT c.lat, c.lng, LAST(v.count) 
FROM camera_camera c , camera_cameravehiclecount v 
WHERE c.id = v.cameraid 

我正在使用LAST()聚合函数,但我收到此错误:

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   使用camera_camera c附近的'(v.count),camera_cameravehiclecount v   在哪里c.id = v.came'在第1行

我交叉检查w3school的语法,但我仍然收到此错误。我使用DB4free作为我的在线数据库。请告诉我我在哪里做错了。

2 个答案:

答案 0 :(得分:2)

w3页面提示了一种解决方法,因为LAST不在mysql中。 http://www.w3schools.com/sql/sql_func_last.asp

您可以尝试这样做:

SELECT c.lat, c.lng, v.count
FROM camera_camera c , camera_cameravehiclecount v 
WHERE c.id = v.cameraid 
ORDER BY v.count DESC 
LIMIT 1

答案 1 :(得分:1)

首先,您需要学习使用正确的JOIN语法。简单规则:从不FROM子句中使用逗号。 始终使用明确的JOIN

其次,您需要一个列来指定最后一个。假设它是车辆计数表上的id。然后,您将使用order bylimit

SELECT c.lat, c.lng, LAST(v.count) 
FROM camera_camera c JOIN
     camera_cameravehiclecount v 
     ON c.id = v.cameraid 
ORDER BY v.id DESC
LIMIT 1;

注意:ORDER BY v.count DESC不合适,除非您知道该列只是在增加。