我想简单地使用传递的参数更新一组行而不是来自另一个表,但为了识别这些行,我需要执行左连接。以下是选择查询:
SELECT *
FROM SAMPLE_STATUS pss
LEFT JOIN QC q ON q.SAMPLE_ID = pss.SAMPLE_ID
WHERE q.CONTRACT_CLN_ID = 28 AND q.LOT = 1
我尝试了几个例子,这是最后一个只有一列的示例。
UPDATE
(SELECT pss.APP_WIN_START_DT, TO_CHAR(sysdate, 'YYYYMMDD') AS NEW_AWSD
FROM SAMPLE_STATUS pss
LEFT JOIN QC q ON q.SAMPLE_ID = pss.SAMPLE_ID
WHERE q.CONTRACT_CLN_ID = 28 AND q.LOT = 1) pq
SET APP_WIN_START_DT = NEW_AWSD
从QC表中提取了多条记录,通过样品ID与Sample_Status表连接。我收到的错误信息是:
SQL Error: ORA-01779: cannot modify a column which maps to a non key-preserved table
01779. 00000 - "cannot modify a column which maps to a non key-preserved table"
*Cause: An attempt was made to insert or update columns of a join view which
map to a non-key-preserved table.
*Action: Modify the underlying base tables directly.
提前感谢。
SAMPLE_ID
列在这些表中都没有唯一或主键。 - Barbaros Özhan