我正在嘗試使用查找表中可能的三個值來更新名為 software_id 的列。因此,使用 id 列的軟體表中的值更新用戶軟體軟體 id 列。但是軟體表中只有三行。在用戶軟體表中有超過 1000 個。但是當我運行下面的查詢時,只有三行得到更新,其余的保留為空。
所以 softwares id 列是數字并且去 1,2,3 并且 user_sofwares software_id 列都是空的。
當我運行以下查詢時。
UPDATE user_software c
SET sotware_id = (
SELECT DISTINCT id
FROM softwares
WHERE id = c.id
);
只有目標表的前三行得到更新。我希望 user_softwares 列上的每一行都更新為 1,2 或 3。所以它應該是 1,2,3,1,2,3 例如。
每當我嘗試更新所有行時,我都會收到此錯誤
Error report - ORA-01427: single-row subquery returns more than one row
uj5u.com熱心網友回復:
您可以使用以下MERGE陳述句執行此操作:
MERGE INTO (SELECT software_id, 1, ora_hash(ROWID, 2) 1 AS fake_id
FROM user_software) u_soft
USING (SELECT DISTINCT id
FROM softwares) sftw
ON (sftw.id = u_soft.fake_id)
WHEN MATCHED THEN UPDATE SET u_soft.software_id = sftw.id;
(考慮到你的比賽是獨一無二的)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/481641.html
