Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中的Update语句_Sql_Oracle_Sql Update - Fatal编程技术网

SQL中的Update语句

SQL中的Update语句,sql,oracle,sql-update,Sql,Oracle,Sql Update,我正在编写一个更新触发器,正在努力处理Update语句: 声明如下: UPDATE ARGUS_APP.CMN_REG_REPORTS CARR SET CARR.DATE_SUBMITTED = ( SELECT To_Date(M.ACKNOWLEDGMENTHEADER.MESSAGEDATE,'YYYYMMDDHH24MISS') Messagedate FROM esm_owner.MESSAGES M WHERE M.ACKNOWLEDGMENTHEADER.MES

我正在编写一个更新触发器,正在努力处理Update语句:

声明如下:

UPDATE ARGUS_APP.CMN_REG_REPORTS CARR 
SET CARR.DATE_SUBMITTED =
(
  SELECT To_Date(M.ACKNOWLEDGMENTHEADER.MESSAGEDATE,'YYYYMMDDHH24MISS') Messagedate 
  FROM esm_owner.MESSAGES M 
  WHERE M.ACKNOWLEDGMENTHEADER.MESSAGESENDERIDENTIFIER='PMDA' 
)
WHERE  CARR.DATE_SUBMITTED =
(
  SELECT CARR.DATE_SUBMITTED  
  FROM  esm_owner.safetyreport sr,esm_owner.MESSAGES M,ARGUS_APP.CMN_REG_REPORTS CARR 
  WHERE sr.report_id=CARR.esm_report_id 
    AND M.msg_id  = sr.msg_id 
    AND M.ACKNOWLEDGMENTHEADER.MESSAGESENDERIDENTIFIER='PMDA' 
)
每次我都会得到ORA:01427

表格结构如下:

UPDATE ARGUS_APP.CMN_REG_REPORTS CARR 
SET CARR.DATE_SUBMITTED =
(
  SELECT To_Date(M.ACKNOWLEDGMENTHEADER.MESSAGEDATE,'YYYYMMDDHH24MISS') Messagedate 
  FROM esm_owner.MESSAGES M 
  WHERE M.ACKNOWLEDGMENTHEADER.MESSAGESENDERIDENTIFIER='PMDA' 
)
WHERE  CARR.DATE_SUBMITTED =
(
  SELECT CARR.DATE_SUBMITTED  
  FROM  esm_owner.safetyreport sr,esm_owner.MESSAGES M,ARGUS_APP.CMN_REG_REPORTS CARR 
  WHERE sr.report_id=CARR.esm_report_id 
    AND M.msg_id  = sr.msg_id 
    AND M.ACKNOWLEDGMENTHEADER.MESSAGESENDERIDENTIFIER='PMDA' 
)
我有三张桌子

  • ARGUS_APP.CMN_REG_REPORTS CARR………..具有列DATE_SUBMITTED(我要更新)和esm_report_id,该列与安全报告的报告id连接
  • ESM_OWNER.SAFETYREPORT SR…………具有列report_id和MSG_id(与MESSAGES表的MSG_id连接)
  • 消息M…………具有MSG_ID和AcknowledgementHeader.MESSAGESENDERIDENTIFIER列

  • 请帮我解决这个问题。

    我要大刀阔斧地试一下,猜猜这就是你想要的。它们的关键特性是将子选择与更新关联起来(子选择中的
    carr
    参考外部语句中的表)

    下面是一个显示基本原理的示例:


    看起来您的一个子查询可能返回了多行数据。您可以通过单独运行每一个来检查这一点

    如果要将更新应用于所有对象,请更改

    ... = (SELECT...
    


    您的一个子查询返回了多行,这是导致错误的原因。您的问题不清楚您希望如何解决此问题。
    Messages
    MESSAGESENDERIDENTIFIER
    上不是唯一的,或者您的其他子查询有问题。。。如果没有更多的信息,我看不出我们能提供什么帮助,而且我们的帮助速度肯定比你自己解决的快。……两个子查询都返回9行,正如我所期望的那样,因为我使用了过滤条件“PMDA”,所以我希望更新将一对一映射并更新日期值。@lAURENCE我设置了一个测试用例。。我该怎么做与你分享吗?我确实在创建过程中忽略了PMDA这一点。我怎么能在URL上看到它?是顶部的View Sample Fiddle按钮吗?但是我在那里什么也看不见
    ... IN (SELECT ...