sql - 在oracle中使用join更新表而不使用PK

标签 sql oracle sql-update

UPDATE
  (
    SELECT
      a.COL1
    FROM
      TABLE1 a,
      TABLE2 b,
      TABLE3 c
    WHERE
      a.name = b.name
      c.ccol = b.ccol AND
      AND b.col1 = 'anyvalue'
      AND a.col2 = 'anothervalue'
  ) u
SET
  u.COL1 = 'VALUE'

此查询不起作用,因为 TABLE1 不包含 PK。如何编写这样的查询?

最佳答案

以下内容应该可以实现您在上面想要实现的目标:

UPDATE  TABLE1
SET     COL1 = 'VALUE'
WHERE   EXISTS
        (   SELECT  1
            FROM    TABLE2 B
                    INNER JOIN TABLE3 C
                        ON B.Ccol = C.Ccol
            WHERE   b.Name = Table1.Name
            AND     b.Col1 = 'AnyValue'
            AND     c.Col1 = 'AnotherValue'
        )

关于sql - 在oracle中使用join更新表而不使用PK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11848171/

相关文章:

sql - View 中可以有 OrderBy 吗?

java - java中Json到CLOB

mysql - 更新 mySQL 中列的部分

mysql - SQL 语句语法差异

php - 使用 PHP 数组的 SQL 搜索

sql - 如何根据他的状态选择不同的数字

python - pandas df.to_sql到Oracle数据库数据类型不一致

java - 在 JPA 中处理 ID 表的最佳解决方案是什么?

sql - 从 postgres 的字符串数组列中删除重复条目

mysql - 大型 UPDATE [...] SELECT FROM 导致并行 UPDATE/DELETE 终止