2016-05-28 14 views
2

最近、私はプロジェクトを開始しました。私はデータベースに挿入された最後のレコードをフェッチしたい。SQLでLAST()集計関数を使用中にエラーが発生しました

クエリは次のとおりです。

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

私はLAST()集約関数を使用していますが、私はこのエラーを取得しています:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(v.count) from camera_camera c , camera_cameravehiclecount v WHERE c.id = v.came' at line 1

私はw3schoolから構文をチェックするにクロスが、それでも私はこのエラーを取得しています。私は私のオンラインデータベースとしてDB4freeを使用しています。親切にも、どこで私が間違っているか教えてください。

+1

達成しようとしているものは何ですか? – Mureinik

+1

id、sが同じテーブルから "count"の最後に挿入された値を取得したいだけです。 –

答えて

2

w3ページでは、LAST is not in 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 
+0

それは働いた。本当にありがとう、ありがとう。 :) –

1

まず、あなたは正しいJOIN構文を使用することを学ぶ必要があります。単純なルール:は、FROM句にカンマを使用します。 常にを使用すると、明示的にJOINが使用されます。

第2に、最後のものを指定する列が必要です。車両数表のidとします。

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 bylimit使用するORDER BY v.count DESCを使用すると、その列のみが増加していることを知っている限り、適切ではありません。

関連する問題