I have a table as开发者_Go百科 follows: table 1
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
and another table as follows: table 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
I want to fetch all the records from table 1 where variable_1, variable_2 and variable_3 of table 1 doesnot match with table 2.
How can I do that in TSQL?
Try this:
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
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
)
---EDIT---
The above will "fetch all the records from table 1 where variable_1, variable_2 and variable_3 of table 1 doesnot match with table 2", as you asked.
However, it seems that you want to match the specific rows from table 2 not just any rows (BTW, you should have specified that in your question). If that is the case, Marco's answer looks good.
精彩评论