2012-07-30 85 views
0

我在數據庫中有兩個大表。它們都包含一個名爲「名稱」的列。我的目標是找到包含在一個數據庫中但不是另一個數據庫中的名稱的行。查找兩個表中的差異

我猜會有一個加入聲明和一個地方,但我不知道如何使用這兩個串聯爲了創建一個成功的查詢。

建議?

回答

5
SELECT * FROM TABLE_A WHERE NAME NOT IN 
    (SELECT NAME FROM TABLE_B) 
0

EXISTS可能比IN更快,請參閱Difference between EXISTS and IN in SQL?

你可以像這樣使用EXISTS。瞭解兩種方法是有用的,因爲它們不完全相同。您可以將EXISTS量詞換成SOME, ALL or ANY。我想你可以找出會發生什麼:)

select * from a1 where not exists(select 1 from a2 where name=a1.name); 

注意,他們是不是100%相同! SQL有three-valued logic