【问题标题】:ORA-01747: invalid user.table.column, table.column, or column specification in OracleORA-01747: Oracle 中的 user.table.column、table.column 或列规范无效
【发布时间】:2015-05-01 20:34:42
【问题描述】:

有以下更新查询,它给出了一个我无法识别的错误ORA-01747: invalid user.table.column, table.column, or column specification。我猜我有正确的语法,但它仍然给出错误。这是查询:

Update TEMP_WF_WORKFLOW Set Event_ID=(Select 10003 from TEMP_WF_WORKFLOW TWW JOIN TMP_SOAP_MONITORING_IDS TSM ON TSM.SUBSCRIPTION_ID=TWW.SUBSCRIPTION_ID where TSM.order_type='SELF_REGISTRATION'),
Set Event_ID=(Select 10028 from TEMP_WF_WORKFLOW TWW JOIN TMP_SOAP_MONITORING_IDS TSM ON TSM.SUBSCRIPTION_ID=TWW.SUBSCRIPTION_ID where TSM.order_type='NEW'),    
Set Event_ID=(Select 10078 from TEMP_WF_WORKFLOW TWW JOIN TMP_SOAP_MONITORING_IDS TSM ON TSM.SUBSCRIPTION_ID=TWW.SUBSCRIPTION_ID where TSM.order_type='SELF_REGISTRATION'),
Set Event_ID=(Select 10101 from TEMP_WF_WORKFLOW TWW JOIN TMP_SOAP_MONITORING_IDS TSM ON TSM.SUBSCRIPTION_ID=TWW.SUBSCRIPTION_ID where TSM.order_type='NEW')

【问题讨论】:

  • 您知道,我们不知道您在互联网领域的数据库结构。我们应该如何知道哪些表和列不正确?
  • 哦,我明白我会稍微改变一下查询,我只想在我的查询中出现语法错误
  • 这似乎不是 语法 错误。
  • SET 关键字只能在第一列之前。为什么要一遍又一遍地重复同一列?
  • 方法错误,只设置一次列,条件用例。

标签: sql oracle sql-update


【解决方案1】:
Update TEMP_WF_WORKFLOW
  Set Event_ID= case (select TSM.order_type
                      from TEMP_WF_WORKFLOW TWW JOIN TMP_SOAP_MONITORING_IDS TSM
                        ON TSM.SUBSCRIPTION_ID=TWW.SUBSCRIPTION_ID)
                  when 'SELF_REGISTRATION' then 10008
                  when 'NEW' then 10003
                  when 'SELF_REGISTRATION' then 10078
                  when 'NEW' then 10101
                  else Event_ID
                end

这就是你想要做的!请注意,重复相同的值!!!

为什么要硬编码整数值?

【讨论】:

  • 如果不对值进行硬编码,我如何使用条件更新 EVENT_ID 列?
  • @Rahul,jarlh 建议应该有一个表,其中EVENT_ID 的值对应于ORDER_TYPE
  • 没有,相同订单类型的事件太多,我没有单独的表格
  • @DavidFaber,没错!使查询独立于当前的“代码”集。
  • 这是我尝试过的查询,但给出了缺少括号的错误:- 更新 TEMP_WF_WORKFLOW 设置 Event_ID= 大小写(从 TEMP_WF_WORKFLOW TWW 中选择 TSM.order_type、WF.STATUS_ID、WF.NAME 在 TSM 上加入 TMP_SOAP_MONITORING_IDS TSM。 SUBSCRIPTION_ID=TWW.SUBSCRIPTION_ID) when ('SELF_REGISTRATION',0,'SIGNUP_MOBILE_PRE_PAID') then 10008 END
猜你喜欢
  • 2012-03-16
  • 2018-12-19
  • 2013-04-28
  • 2013-10-21
  • 2016-10-25
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多