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 回答