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