簡體   English   中英

Update語句中的“單行子查詢返回多個行”

[英]“Single-row subquery returns more than one row” in Update statement

我已經努力了幾天,以研究如何使我的update語句正常工作。 select語句似乎按預期工作,但是當我嘗試更新列值時,出現ORA-01427 single-row subquery returns more than one row錯誤。

這是代碼:

UPDATE tbl_metrics
SET act_end_time = (WITH base
AS (SELECT caseid, entry_timestamp
       FROM activity
      WHERE act_id IN (100, 700, 300)
      )  
SELECT t1.entry_timestamp
FROM base t1, tbl_metrics t2
WHERE t1.caseid = t2.caseid
AND t2.act_start_time < (SELECT MIN(t1.entry_timestamp) FROM base t1 WHERE t1.caseid = t2.caseid))

這個想法是用activity表中的最低entry_timestamp值更新tbl_metrics.act_end_time列,其中activity.caseid=tbl_metrics.caseidactivity.entry_timestamp>tbl_metrics.act_start_timeactivity.act_idactivity.entry_timestamp>tbl_metrics.act_start_time或300。

我認為應該是這樣的:

UPDATE tbl_metrics t2
SET act_end_time = 
    (SELECT MIN(t1.entry_timestamp) 
    FROM activity t1 
    WHERE act_id IN (100, 700, 300)
        AND t1.entry_timestamp > t2.act_start_time
        AND t1.caseid = t2.caseid)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM