我有一张表xx_photo,其中我必须从xx_people_ph表中插入数据。
xx_photo :
IMAGE_ID NOT NULL NUMBER(15)
PARENT_ID NOT NULL NUMBER(15)
TABLE_NAME NOT NULL VARCHAR2(30)
IMAGE NOT NULL BLOB
DATA_FLAG VARCHAR2(2)
HIST_DATE DATE
每当我们将数据插入xx_photo时,hist_date将更新为sysdate,data_flag将更新为' Y'。
xx_people_ph
IMAGE_ID NOT NULL NUMBER(15)
PARENT_ID NOT NULL NUMBER(15)
TABLE_NAME NOT NULL VARCHAR2(30)
IMAGE NOT NULL BLOB
现在我正在使用:
insert into xx_photo
SELECT IMAGE_ID ,
PARENT_ID ,
Table_Name ,
Image ,
'Y',
Sysdate
FROM Per_Images Img_Tab;
In this statement only , i want to check if the record for same parent_id exists
在xx_photo中。如果它已经存在,那么不应该在该表中插入数据。
如何修改此查询以仅插入xx_photo表中已不存在的记录
答案 0 :(得分:1)
使用Not Exists
INSERT INTO xx_photo (Col1,col2,...)
SELECT image_id,
parent_id,
table_name,
image,
'Y',
sysdate
FROM per_images Img_Tab
WHERE NOT EXISTS (SELECT 1
FROM xx_photo x
WHERE x.parent_id = Img_Tab.parent_id)