2

これは、ユーザーが私のWebサイトからログアウトを押したときに実行される単純なクエリです。

UPDATE `user_logins` 
   SET `active` = 0 
 WHERE `user_id` = 3 
   AND `datetime` = MAX(`datetime`) LIMIT 1

user_id値はそこでPDOにバインドされます。

次の例外がスローされます

グループ関数の使用が無効です

グーグルで回るWHEREと、句で集計関数を使用しているためだと言われているようです。

Stack Overflowでもこの質問を見つけましたが、遊んでみてもHAVINGうまくいかなかったようです。をに置き換えてみましANDHAVING

HAVINGこのクエリを変更して、集計を使用しない(または使用する)が、同じ機能を実行するにはどうすればよいですか?

本当にありがとう!

4

1 に答える 1

3

あなたが使用することができORDER BYますLIMIT

UPDATE `user_logins` SET `active` = 0
WHERE `user_id` = 3
ORDER BY `datetime` DESC
LIMIT 1;

これにより、そのユーザーの最も高い日時が最初に配置LIMIT 1され、複数のレコードがクエリに一致した場合に最初のレコードのみが更新されるようになります。

于 2010-07-13T00:20:22.527 に答える