Oracle:尝试使用唯一键的组合'Update'语句。卡在 where 子句中



我正在尝试使用唯一键组合的更新语句。这些唯一键用于 where 子句,这些子句是使用子查询从选择查询中拖动的。不知道如何同时使用这两者。

查询看起来像这样

1    UPDATE table1
2    SET column1 = .. , column2 = ..
3    WHERE TOOL_NO, TOOL_SERIAL_NO IN
4    (SELECT TOOL_NO, TOOL_SERIAL_NO FROM TABLE2 WHERE condition)

TOOL_NO和TOOL_SERIAL_NO是唯一键,并且相互依赖。 例如,Tool_No将有多个Tool_Serial_No。

问题出在第 3 行。不确定如何在依赖于同一子查询的同一 where 子句中使用两个字段,

任何帮助,不胜感激。

你已经很接近了 - 只需将第 #3 行中的这些列括在括号中:

UPDATE table1
SET column1 = .. , column2 = ..
WHERE (TOOL_NO, TOOL_SERIAL_NO) IN
(SELECT TOOL_NO, TOOL_SERIAL_NO FROM TABLE2 WHERE condition)

您还需要将针对 table2 的子查询与表 1 SQL 中的外部位置相关联。

在将 where 子句中的多列匹配在一起时,始终将其括在括号中。所以在你的情况下,TOOL_NO,TOOL_SERIAL_NO应该是哪里(TOOL_NO,TOOL_SERIAL_NO(

UPDATE table1
SET column1 = .. , column2 = ..
WHERE (TOOL_NO, TOOL_SERIAL_NO) IN
(SELECT TOOL_NO, TOOL_SERIAL_NO FROM TABLE2 WHERE condition)

最新更新