sql - 在 oracle 中执行更新查询后如何识别哪些记录没有更新?
问题描述
我试图通过以下更新语句更新 oracle 中的 100 条记录,但是当我执行它时,它说 90 条记录已更新,而我在 where 子句中有 100 条记录。
现在如何识别 oracle 中的 100 条记录(代码)中没有更新的 10 条记录(代码)?
在下面的语句中,我想知道没有更新的代号?有什么简单的技巧要知道吗?
update table1 a set a.column1='Yes' where a.column2 in ('code1','code2','code3','code4',........,'code100');
解决方案
您不能真正直接从更新中获取;但是您可以使用相同的值列表(假设它是硬编码列表,而不是来自表)作为集合,然后在集合中查找不在表中的值:
select *
from table(sys.odcivarchar2list('code1','code2','code3','code4',........,'code100')) t
where not exists (
select null
from table1 a
where a.column2 = t.column_value
);
db<> 摆弄一个较小的集合来展示这个想法。
您可以将更新修改为仅更新尚未“是”的行;如果你这样做了,那么你可以寻找根本不存在的集合值,或者那些存在但不需要更新的集合值——当然,在这种情况下,在你实际运行更新之前。db<>小提琴。
odcivarchar2list是内置的集合类型,但您可以使用自己的。
如果您已经在集合或表中拥有值,则可以直接将其用于此查询和更新。
推荐阅读
- javascript - 如何使一个数字等于所有数字
- reactjs - 函数 App() vs 类 App 扩展 App.js 文件中的组件
- bigcommerce - 如何在 Bigcommerce 的购物车预览页面中替换“您可能还喜欢”以拥有“相关产品”
- html - 我正在寻找如何找到可以为此表单制作自定义 CSS 的 Podio 网络表单的 HTML 代码
- c++ - С++ 将 lambda 包装在函数内的另一个 lambda 中
- ionic-framework - 滑动菜单推送页面而不是越过页面
- python - 使用Python从数据库表中测量经纬度坐标之间的距离
- neo4j - 无法使用 systemctl 启动 neo4j:“无法从插件 jar 加载”
- authentication - Twitter sdk 如何允许获取用户的名字和姓氏?
- postgresql - 如何在特定日期后提取整月的记录?