如果之前有过类似的问题,请道歉,目前我运行3个不同的更新查询以获得所需的结果。查询如下,
UPDATE users SET enabled = false where username in (SELECT username
FROM users WHERE enabled = true AND lastaccess != 0 AND lastaccess
< (EXTRACT('epoch' FROM CURRENT_TIMESTAMP) - (86400*200))*1000 AND
username NOT LIKE ('admintest%'));
此查询运行后(禁用所有未在一定时间内访问系统的用户),然后在整个表上运行以下2个查询,
update users set weeklypopupuse = 0;
update users set monthlypopupuse = 0;
这两个查询然后将每周和每月使用重置为0.
现在这根据要求完美地运行,但是有一种更优雅的方式将所有这3个查询写入单个查询,从而得到相同的结果。
任何帮助或建议都将受到高度赞赏。提前致谢
答案 0 :(得分:1)
<强>更新强> 在OP给出完整结构后,重构为:
update users
set
weeklypopupuse = 0
, monthlypopupuse = 0
, enabled = case
when
enabled = true
AND lastaccess != 0
AND lastaccess < (EXTRACT('epoch' FROM CURRENT_TIMESTAMP) - (86400*200))*1000
AND username NOT LIKE ('admintest%')
then false
end