4

从 table1 中选择 table2 中不存在的行并将其插入 table2

喜欢

图片

id  type    name
502  1      summer.gif

搜索引擎优化图片

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

现在我想从Images表中选择 id 与 idimage 表不匹配的所有行SEOImages并将这些行插入到SEOImages表中。

4

4 回答 4

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);
于 2013-07-05T09:17:09.543 回答
2
INSERT INTO SeoImages
(IdImage)
SELECT ID
FROM Images
WHERE ID NOT IN (SELECT IDIMAGE FROM SEOImages)
于 2013-07-05T09:17:26.257 回答
1
INSERT INTO SEOImages
SELECT *
FROM Images
WHERE NOT EXISTS (SELECT 1 
                 FROM Images t1, SEOImages t2 
                 WHERE t1.id=t2.id) ;
于 2013-07-05T09:26:53.730 回答
1

查询:

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

应该从图像中提取那些在 SEOImages 中没有相应 ID 的行,假设它们都是相同的类型。

或者,使用 JOIN:

SELECT i.* FROM Images i
    LEFT OUTER JOIN SEOImages s on i.id = s.imageId
WHERE s.imageId IS NULL
于 2013-07-05T09:17:18.213 回答