如何使用取决于条件的值更新列 - Oracle

时间:2014-11-15 18:39:11

标签: sql oracle11g

我的要求是使用' Y'更新列。如果满足一系列条件或符合N' N'我想在同一个查询中执行此操作。

例如:

CREATE TABLE TAB1 (COL1 INT, COL2 INT);

CREATE TABLE TAB2 (COL1 INT);

INSERT INTO TAB1 VALUES(1, 3);
INSERT INTO TAB1 VALUES(2, 3);

INSERT INTO TAB2 VALUES(1);

INSERT INTO TAB2 VALUES(1);

我想用' Y'来更新TAB1的COL2。如果TAB1.COL1与TAB2.COL1或COL2匹配,则应使用' N'进行更新。这当然是一个简单的例子,实际要求要复杂得多。

1 个答案:

答案 0 :(得分:1)

编辑:更正了我更新0的答案。

假设Y为1,N为0(因为你说COL2是INT)

UPDATE TAB1 T1
SET T1.COL2 = 
  CASE WHEN EXISTS(SELECT 1 FROM TAB2 T2 WHERE T2.COL1 = T1.COL1) THEN 1
    ELSE 0
  END;

Here是SQLFiddle。