gpt4 book ai didi

sql - Oracle:如何更新表中的 "outdated"日期?

转载 作者:搜寻专家 更新时间:2023-10-30 21:40:30 25 4
gpt4 key购买 nike

我们的用例:

对于表 USERS:

更新所有行(为列 ACTIVE 设置值 'N')以防用户处于非事件状态(列 'LAST_VISIT') 60 分钟。

Google 帮助我找到了如何在数据库中获取当前时间(我使用 Oracle):

SELECT sysdate FROM dual;

然后我找到了如何找到两个日期之间的分钟差的方法:

SELECT(date1 - date2)*1440

看起来有点丑……但是还可以。

现在,我正在尝试将它们组合在一起:

UPDATE USERS u 
SET ACTIVE='N'
WHERE SELECT((SELECT sysdate FROM dual) - u.LAST_VISIT)*1440 >60;

能否请您查看我的最终查询。

还好吗?或者,也许可以对其进行优化?

最佳答案

可以简化查询

UPDATE users u
SET active = 'N'
WHERE u.last_visit < sysdate - interval '1' hour;

如果 last_visit 上有一个可用于查询的索引(因为谓词具有足够的选择性),则此查询可能会使用该索引。

关于sql - Oracle:如何更新表中的 "outdated"日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32703512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com