sql - 在对 Oracle 数据库中不同模式中的表执行更新查询时显示无效标识符 SQL 错误
问题描述
在这里,我使用的是 Oracle SQL 开发人员,我需要更新另一个模式中的表。这是我写的更新查询。
update dcs.lte_pin_register set pin = ''
where dcs.lte_pin_register.subscriber_seqno = dcs.subscriber.subscriber_seqno
and dcs.subscriber.sub_number = '?';
在上面的查询中,
- dcs -> 引用数据库中的另一个模式
- lte_pin_register 和subscriber 是dcs 模式中的两个表
- subscriber_seqno 和 sub_number 是各自表中的列。
但是,当我要使用有效的 sub_number 执行上述查询时,我收到以下错误提示。
Error report -
SQL Error: ORA-00904: "DCS"."SUBSCRIBER"."SUB_NUMBER": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
我可以使用 (tableName.columnName) 为更新查询调用同一架构中的列名。但是如何修改上述查询以引用不同模式中的表中的列?
解决方案
您必须使用共同相关的子查询来实现这一点 -
UPDATE dcs.lte_pin_register
SET pin = ''
WHERE EXISTS (SELECT 1
FROM dcs.subscriber
WHERE dcs.lte_pin_register.subscriber_seqno = dcs.subscriber.subscriber_seqno
AND dcs.subscriber.sub_number = '?');
推荐阅读
- javascript - 转换这种 JSON 结构的最优雅的方法是什么?
- python - 如何计算绝对积分?
- php - 在可能是 405 或 422 的情况下会显示什么 HTTP 响应代码?
- hibernate - 使用 @EmbeddedId 的多对多关系生成为:class 生成的空 id
- pandas - Convert multiple appends values into panda dataframe using python
- c# - 获取“该行已经属于另一个表并且输入数组长于该表中的列数。”
- reactjs - React 应用程序中的内容安全策略没有阻止在线脚本
- html - 无法让 CSS Flex 响应。Divs 离开屏幕
- ios - 直接渲染一个CGImage(而不是UIImage)?
- python - pandas 如何找到一对一的相关值?