我在此声明中收到SQL Error: ORA-01779: cannot modify a column which maps to a non key-preserved table
错误:
UPDATE
(
SELECT CELLS.NUM, UND.CLIENT_PARAMS
FROM CELLS
LEFT OUTER JOIN UND
ON CELLS.UND_ID = UND.ID
WHERE CELLS.SASE = 1
) t
SET t.CLIENT_PARAMS = 'test';
我想更新所有行的CLIENT_PARAMS
字段,选择返回。
答案 0 :(得分:0)
试试这个
UPDATE und u
SET client_params = 'test'
WHERE EXISTS
(SELECT 1
FROM cells c
WHERE C.SASE = 1
AND c.und_id = u.id)
答案 1 :(得分:0)
通过标识列更新一个表中直接与另一个表中的行对应的行的最简单(尽管可能不是最有效)的方法是使用WHERE table1.column IN (SELECT id FROM table2 WHERE ...)
。
在这种情况下:
UPDATE UND
SET client_params = 'test'
WHERE id IN
(SELECT und_id
FROM CELLS
WHERE SASE=1)