嗨,我有这段代码:
insert into table1(column1, column2)
select distinct id, somevalue from table1 where id in (select id from table2)
基本上是将table2中的所有id添加到table1 column1,而table1中的其他列共享所有行的相同值。
现在的问题是我必须检查table1中的id是否已经存在于table1中,并且只有在不存在时才会插入。我怎样才能做到这一点?
答案 0 :(得分:1)
我认为你正试图做这样的事情......
INSERT INTO table1(column1, column2)
SELECT DISTINCT t2.id, t2.somevalue
FROM table2 t2 LEFT JOIN table1 t1
ON t2.id = t1.id
where t1.id IS NULL
答案 1 :(得分:0)
INSERT INTO TABLE1(COLUMN1, COLUMN2)
SELECT distinct id, value
FROM Table2
WHERE id NOT IN (SELECT ID from table1)
答案 2 :(得分:0)
你的例子插入有点不清楚。看起来您将id插入Table1.Column1而不是Table1.id。但是,假设样本是正确的。有很多方法可以做到这一点。
这是一个有点不同,可能更快的一个。由于在这种简单数据上使用GROUP BY而不是DISTINCT,并且使用NOT EXISTS而不是NOT IN或LEFT JOIN,因此速度更快。
INSERT INTO Table1 (Column1, Column2)
SELECT id
,value
FROM Table2
WHERE NOT EXISTS (SELECT ID FROM Table1 WHERE Table1.Id = Table2.Id)
GROUP BY id
,value