TSQL查询从两个表中

问题描述:

我有一个表的组合来创建新表如下: 表1TSQL查询从两个表中

temp_id node_name variable_1 variable_2 variable_3 
1   ab   a   b   y 
2   sdd  a   a   a 
3   u   a   s   s 

和另一个表如下: 表2

temp_id node_name variable_1 variable_2 variable_3 
1   ab   as  sb   y 
2   sdd  a   a   a 
3   u   a   s   s 

我想从表1中获取所有记录,其中表1的variable_1,variable_2和variable_3与表2不匹配。

如何在TSQL中执行此操作?

+0

我假设temp_id和node_name必须匹配? –

+0

创建一个新表或获取记录? –

+0

yes ...连接将在temp_id和node_id上​​。 – CPDS

SELECT * FROM [table 1] t1 
WHERE NOT EXISTS (
    SELECT * FROM [table 2] t2 
    WHERE 
     t1.variable_1 = t2.variable_1 
     AND t1.variable_2 = t2.variable_2 
     AND t1.variable_3 = t2.variable_3 
) 

---编辑---

以上将“从表1中获取所有记录,其中variable_1,variable_2的和表1的variable_3的与表2不匹配“,正如你所问。

但是,似乎你想匹配表2中的特定行而不是任何行(顺便说一句,你应该在你的问题中指定)。如果是这样,Marco的回答看起来不错。

+0

非常感谢! – CPDS

试试这个:

INSERT INTO new_table 
SELECT t1.* FROM table1 AS t1 
LEFT JOIN table2 AS t2 
ON t1.temp_id = t2.temp_id AND 
    t1.node_name = t2.node_name 
WHERE t1.variable_1 <> t2.variable_1 AND 
     t1.variable_2 <> t2.variable_2 AND 
     t1.variable_3 <> t2.variable_3