2013-07-05 6 views
4

Выбор строк из table1, не существует в таблица2 и вставить его в table2выбора строки из одной таблицы и вставить в другую таблицу

как

Изображения

id type name 
502 1  summer.gif 

SEOImages

id  idimage ... ... 
1000 501  ... ... 

Теперь я хочу выбрать все строки из таблицы Images, чей идентификатор не соответствует таблице idи вставить эти строки в таблицу SEOImages.

ответ

2

Подход:

Insert into Table2 
select A,B,C,.... 
    from Table1 
Where Not Exists (select * 
       from table2 
       where Your_where_clause) 

Пример:

SQLFiddelDemo

Create table Images(id int, 
        type int, 
        name varchar(20)); 
Create table SEOImages(id int, 
         idimage int); 

insert into Images values(502,1,'Summer.gif'); 
insert into Images values(503,1,'Summer.gif'); 
insert into Images values(504,1,'Summer.gif'); 
insert into SEOImages values(1000,501); 
insert into SEOImages values(1000,502); 
insert into SEOImages values(1000,503); 

insert into SEOImages 
select 1000,id 
    from Images I 
where not exists (select * 
        from SEOImages 
        where idimage =I.id); 
+1

+1 для использования (не) существует вместо того, чтобы (не) в – Sam

1

Запрос:

SELECT * FROM Images 
    WHERE id NOT IN (SELECT idimage FROM SEOImages) 

должен выводить эти строки из изображений, которые не имеют соответствующего ID в SEOImages, если они оба одного типа.

В качестве альтернативы, с помощью JOIN:

SELECT i.* FROM Images i 
    LEFT OUTER JOIN SEOImages s on i.id = s.imageId 
WHERE s.imageId IS NULL 
2
INSERT INTO SeoImages 
(IdImage) 
SELECT ID 
FROM Images 
WHERE ID NOT IN (SELECT IDIMAGE FROM SEOImages) 
1
INSERT INTO SEOImages 
SELECT * 
FROM Images 
WHERE NOT EXISTS (SELECT 1 
       FROM Images t1, SEOImages t2 
       WHERE t1.id=t2.id) ;