Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 从另一个查询的结果集更新Oracle表_Sql_Oracle_Plsql - Fatal编程技术网

Sql 从另一个查询的结果集更新Oracle表

Sql 从另一个查询的结果集更新Oracle表,sql,oracle,plsql,Sql,Oracle,Plsql,描述:您在映像上看到的第一个表需要从第二个映像上的eventdescription列更新 我试过使用 UPDATE currentEvent SET eventdescription = ( SELECT eh.eventDescription FROM eventHistory eh WHERE updateTime = (SELECT MAX (updateTime)

描述:您在映像上看到的第一个表需要从第二个映像上的eventdescription列更新

我试过使用

UPDATE currentEvent 
 SET eventdescription = ( SELECT eh.eventDescription
                        FROM eventHistory eh
                        WHERE updateTime = (SELECT MAX (updateTime)
                                                FROM eventHistory
                                                WHERE eventID = eh.eventID)
                        )
给了我这个错误

ORA-01427: single-row subquery returns more than one row ORA-06512: at 
"SYS.DBMS_SQL", line 1721

有什么东西我遗漏了,请告知。

您可以使用
先取订单

UPDATE currentEvent 
 SET eventdescription = (SELECT eh.eventDescription
                         FROM eventHistory eh
                         WHERE currentEvent.EventId = eh.EventId
                         ORDER BY updateTime DESC
                         FETCH FIRST 1 ROW ONLY
                        )
WHERE eventdescription IS NULL;

这意味着您将返回多个值为MAX(updateTime)的条目,您将尝试使用多个值更新单个字段。只需执行内部连接更新。工作起来很有魅力。谢谢我尝试在第一个表中添加更多事件id,以查看更新是否可以扩展。更新仍会发生,但已在事件描述下具有值的行也将被更新。Edit——如果表的列具有以前的值,是否有方法限制更新?@sai您需要添加
WHERE
子句。我添加了一个新的事件\u id,并添加了带有“Is null on currentevent.eventdescription”的WHERE子句,该子句将除新事件\u id为“-”之外的所有其他行都设置为“-”。抱歉,我是sql新手。