2011-09-22 49 views
0

我有一個表的組合來創建新表如下: 表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

回答

1
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

3

試試這個:

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