多列存在语句



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

我正在将数据插入的表

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),因为 AAA,106 组合不存在 #T

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

我在下面尝试过,似乎不起作用

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

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

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

上面的查询本质上是说:给我那些在具有相同NameID#T没有相关记录的表 #T1 记录。

最好的办法可能是使用带有子查询的插入语句。 像这样:

SQL 插入到带子查询中 - 检查是否存在

编辑:如果你仍然卡住,试试这个 -

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)

最新更新