使用具有特定条件的另一个表中的值更新Oracle中的表

冰川针

我在Oracle 11中有两个表:

表ta_one:

name    | active
----------------
john    | yes
tina    | yes
mike    | yes

表ta_two:

name    | active
----------------
john    | yes
tina    | yes
tina    | no
mike    | no

我要实现的目标如下:在以下情况下,我要用第二个表ta_two中的“活动”列的值来更新第一个表ta_one中的“活动”列:

  • ta_one中“名称”列中的名称与ta_two中的“名称”相匹配(例如:mike和mike)
  • 如果ta_two中有多个相同名称的条目,则不应进行任何更新(例如:tina)
  • 如果在表ta_two中活动的列中没有“否”,则不应进行任何更新(例如:john)

因此,表ta_one在更新后应如下所示:

name    | active
----------------
john    | yes
tina    | yes
mike    | no

仅mike的条目已更改,因为tina在第二个表中多次出现,并且johns条目在表ta_two的活动列中具有“ yes”。

预先感谢您的帮助。

蒂姆·比格莱森(Tim Biegeleisen)

我总是使用值进行更新,'yes'因为您的逻辑只会这样做。

UPDATE ta_one
SET active = 'no'
WHERE EXISTS
(
    SELECT t2.active
    FROM ta_one t1
    INNER JOIN ta_two t2
        ON t1.name = t2.name
    INNER JOIN
    (
        SELECT name
        FROM ta_two
        GROUP BY name
        HAVING COUNT(*) = 1
    ) t3
        ON t1.name = t3.name
    WHERE t2.active = 'no' AND
          ta_one.name = t1.name
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用另一个表中重复的值更新 Oracle 表中的列

如何根据不同的条件使用另一个表中的值更新表

使用具有中间表的另一个数据库中的另一个表的列更新部分数据

PL / SQL-使用另一个表中的值更新具有最大日期的行

如何使用另一个表中的值更新特定列

如何从另一个表中选择表中的特定条件

使用另一个表中的值更新一个表上的列

使用MySQL中的rand()将表中的值更新到另一个表

使用另一个表中的值更新ms-access表中的值

Sqlite:从具有多个条件的另一个表中的多个列更新

使用来自另一个表的值更新PHP MYSQL中的表

使用另一个表的列中的值更新表的列

如何使用另一个数据库表中的值更新表

如何使用另一个表中的值更新数据库表

使用另一个表中的值更新表

如何使用具有表中另一个结构的结构在gorm中预加载?

根据另一个表的值更新 Oracle 中表中的值

根据另一个表中的值更新一个表中的字段

如果id在另一个表中,则使用值更新MySQL更新列

使用另一个表的值更新表

使用 SSIS 中的另一个表更新一个表(具有关系)

根据特定条件ON UPDATE更新另一个表的最佳方法是什么?

如何使用特定条件更新来自另一个表的TOP 1的列

使用另一个表中的值更新记录-MySQL(Python)

如何使用另一个表中的值更新 PostgreSQL 上的多个列

将数据从一个表复制到另一个具有特定条件的表

根据另一个表中的值更新表中的列

如何使用 MySql 使用另一个表中的值更新两个表上的值

使用SAS中另一个表中的数据更新oracle表