2016-09-14 80 views
0

我有一个表xx_photo,其中我必须从xx_people_ph表插入数据。从一个表插入数据到另一个已经不存在的sql

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

存在什么独特组合,以发现是否存在 –

+0

是什么PARENT_ID相关记录到xx_people_ph image_id?如果它不存在,你想要发生什么,只是不插入记录抛出一个错误,插入它为您?如果你只是想停止插入,如果父母不存在,一种方法是使用INNER JOIN来查看它是否存在 – Matt

+0

parent_id在这两个表中都是唯一的ID –

回答

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) 
+0

谢谢!完美! –

相关问题