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中执行此操作?
答
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
我假设temp_id和node_name必须匹配? –
创建一个新表或获取记录? –
yes ...连接将在temp_id和node_id上。 – CPDS