1

mysql で次のようなクエリを作成する必要があります。

ユーザーが過去 30 日間サインインしていない場合は、クレジットの値を 0 に変更します。

私が試した:

update users set coins = 0 where online > date_sub(now(), interval 30 day);

しかし、これはすべてのユーザーに変更されました..何が問題なのですか?

4

1 に答える 1

4
UPDATE users SET coins = 0 
WHERE online > date_sub(now(), interval 30 day);

online過去 30 日間に (おそらく最後にログオンした)すべてのユーザーを更新します。あなたが望むのはおそらく;

UPDATE users SET coins = 0 
WHERE online < date_sub(now(), interval 30 day);

...これは逆です。

どのユーザーが更新されるかを確認する簡単な方法は、同じ条件で選択を使用することです。これにより、結果が妥当であることを手動で確認できます。

SELECT * FROM users 
WHERE online < date_sub(now(), interval 30 day);
于 2013-05-10T14:52:47.040 に答える