SQL-将列表中尚未包含的值插入表中

SQL-将列表中尚未包含的值插入表中,sql,tsql,Sql,Tsql,在44个值的列表中,我需要插入表中尚未包含的值。它已经有35个了。如何编写SQL语句以仅插入其他9?我将缩短列表以使代码更具可读性。我开始只是尝试创建一个select。问题是,这将返回表中不在我的列表中超过800的所有行,而不仅仅是我的列表中不在目标表中的值。因此,在下面的列表中,如果表中有Acquia、AngularJS、BitBucket和区块链,我只希望查询返回或插入Xamarin select * from Technology t where not exists ( select 1

在44个值的列表中,我需要插入表中尚未包含的值。它已经有35个了。如何编写SQL语句以仅插入其他9?我将缩短列表以使代码更具可读性。我开始只是尝试创建一个select。问题是,这将返回表中不在我的列表中超过800的所有行,而不仅仅是我的列表中不在目标表中的值。因此,在下面的列表中,如果表中有Acquia、AngularJS、BitBucket和区块链,我只希望查询返回或插入Xamarin

select *
from Technology t
where not exists
(
select 1
from
(values ('Acquia'),
('AngularJS'),
('BitBucket'),
('Blockchain'),
('Xamarin')) as TempTable(Name)
where t.Name = TempTable.Name)
您可以使用where子句筛选出已经存在的内容:

with list as (
      select name
      from (values () . . . ) v
     )
insert into t (name)
     select name
     from list
     where not exists (select 1 from t where t.name = list.name);
您可以尝试以下方法:

INSERT INTO Technology 
SELECT .... 
FROM ... //new values
EXCEPT
select *
from Technology t;
有关的更多信息-基本上,您选择的是第一次选择中的所有值,但第二次选择中包含的已返回的这些行除外