Trừ khi SELECT
của bạn truy vấn con trả về một hàng duy nhất, UPDATE
của bạn câu lệnh sẽ không thành công với lỗi
ORA-01427: single-row subquery returns more than one row
Nói chung, khi bạn có một bản cập nhật tương quan, bạn cần một số điều kiện liên quan đến các hàng trong bảng bên ngoài T1
đến các hàng trong truy vấn con bên trong để đảm bảo rằng truy vấn con trả về một hàng duy nhất. Nó thường trông giống như
UPDATE table1 t1 SET (t1.col,t1.Output) = (
SELECT t2.col, t3.Output + t2.col
FROM tabl2 t3
LEFT JOIN table1 t2 ON t3.Join_Key = t2.Join_Key
WHERE t2.col is not NULL
AND t1.some_key = t2.some_key);
Cuối cùng, UPDATE
này câu lệnh đang cập nhật mọi hàng trong T1
. Đó có phải là những gì bạn dự định? Hay bạn chỉ muốn cập nhật các hàng, chẳng hạn như bạn tìm thấy kết quả phù hợp trong truy vấn con của mình?