PL / SQL:WHERE子句中具有多个匹配项的UPDATE查询

时间:2012-01-04 16:09:15

标签: sql oracle

TABLE_A:

ID      TYPE    DATE_UPLOADED   EXPIRED
9872    APPLE   03-JAN-11       0
9874    MANGO   03-JAN-11       0
9873    GRAPE   03-JAN-11       0

TABLE_B:

TYPE    LIFE
APPLE   3
MANGO   2
GRAPE   1

我想在这里实现的是更新EXPIREDTABLE_A1时,DATE_UPLOADED的字段为LIFE的值 截至当前日期,该类型已超过UPDATE TABLE_A SET EXPIRED = 1 WHERE EXPIRED = 0 AND (TRUNC(SYSDATE) - TRUNC(DATE_UPLOADED)) > ( SELECT LIFE FROM TABLE_B );

此更新查询是我目前所处的位置。我知道它 错了,这就是我需要你帮助的地方。

更新查询:

TYPE

请注意{{1}}字段可能是任何内容,可能更多 比样本数据中给出的更多。

1 个答案:

答案 0 :(得分:4)

您没有链接这两个表。尝试这样的事情:

UPDATE TABLE_A
SET EXPIRED = 1
WHERE EXPIRED = 0
AND (TRUNC(SYSDATE) - TRUNC(DATE_UPLOADED)) >
(
    SELECT LIFE
    FROM TABLE_B 
    WHERE TYPE = TABLE_A.TYPE
);