【问题标题】:Oracle: Trying 'Update' statement using combination of unique Keys. Stuck in the where clauseOracle:尝试使用唯一键组合的“更新”语句。卡在 where 子句中
【发布时间】:2020-01-21 17:23:05
【问题描述】:

我正在尝试使用使用唯一键组合的更新语句。这些唯一键用于使用子查询从选择查询中拖出的 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 子句中使用两个字段,

感谢任何帮助。

【问题讨论】:

    标签: sql oracle sql-update oracle-sqldeveloper


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您还需要将针对 table2 的子查询与 table1 SQL 中的外部 where 相关联。

      【讨论】:

        【解决方案3】:

        在将 where 子句中的多个列匹配在一起时,始终将其括在括号中。所以在你的情况下 WHERE TOOL_NO, TOOL_SERIAL_NO 应该是 WHERE (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)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-12
          • 1970-01-01
          • 1970-01-01
          • 2015-05-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多