多列存在语句

时间:2017-03-27 11:06:37

标签: sql sql-server-2008-r2

我正在尝试将数据插入到另一个数据尚不存在的表中

我将数据插入

的表格
CREATE TABLE #T(Name VARCHAR(10),Unit INT, Id INT)
INSERT INTO #T
    VALUES('AAA',10,100),('AAB',11,102),('AAC',12,130)

我从

中选择数据的表格
CREATE TABLE #T1(Name VARCHAR(10),TypeId INT,Unit INT, Id INT)
INSERT INTO #T1
VALUES('AAA',3,10,100),('AAA',3,10,106)

在这种情况下,我想从#T1中选择('AAA',3,10,106),因为#T

中不存在AAA,106组合

基本上我想要的是填充唯一的名称和ID组合

我在下面尝试了似乎无法正常工作

SELECT *
FROM #T1
WHERE NOT EXISTS(SELECT * FROM #T)

2 个答案:

答案 0 :(得分:3)

你必须以某种方式关联这两个表:

SELECT *
FROM #T1 
WHERE NOT EXISTS(SELECT * 
                 FROM #T
                 WHERE #T1.Name = #T.Name AND #T1.ID = #T.ID)

上述查询基本上是这样说的:给我一些表#T1的记录,这些记录在#T中没有相关记录相同 Name ID值。

答案 1 :(得分:0)

您最好的选择可能是使用带有子查询的insert语句。像这样:

SQL Insert Into w/Subquery - Checking If Not Exists

编辑:如果您仍然卡住,请尝试此操作 -

INSERT INTO #T (Name, Unit, Id)
SELECT Name, Unit, Id
FROM #T1 
WHERE 
    NOT EXISTS (SELECT Name, Unit, Id FROM #T
        WHERE #T.Name = #T1.Name AND #T.Unit = #T1.Unit AND #T.Id = #T1.Id)