我有一张表格如下:
CREATE TABLE product
(
PRODUCT NVARCHAR2(20) NOT NULL,
TYPE NUMBER(5) NOT NULL,
ID NUMBER(10) NOT NULL,
addDATE DATE NOT NULL,
TITLE NVARCHAR2(80) NOT NULL
)
我必须根据列类型和addDate从表中删除记录。 有40种类型的产品,每种产品都有不同的删除标准。 以下是我目前使用的查询;
DELETE from PRODUCT where
(type =1 and trunc(ADDdate) < add_months( sysdate, -24 ))
OR
(type =2 and trunc(ADDdate) < add_months( sysdate, -12 ))
OR
(type =3 and trunc(ADDdate) < add_months( sysdate, 12 ))
.
..
.
.
OR
(type =49 and trunc(ADDdate) < add_months( sysdate, 1 ));
除了上面提到的查询之外,您能否建议我实现此方法的有效方法。
答案 0 :(得分:1)
您应该有一个具有删除条件的表。 。 。这似乎是几个月。因此:
delete from product
where trunc(AddDate) < (select add_months(sysdate, dtt.deletionmonths)
from DeleteTypeTable dtt
where dtt.type = product.type
);