在一个已经不存在的sql中将数据从一个表插入另一个表

时间:2016-09-14 16:09:36

标签: sql insert oracle-sqldeveloper

我有一张表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表中已不存在的记录

1 个答案:

答案 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)