2016-02-05 66 views
-3

我有一個任務。例如,我有2個表格。 表1列ID,名稱 表2列ID,名稱使用SQL查找兩列

數據是像在表1中:

     ID Name 
         1 A 
         2 B 
         3 C 

數據是像在表2中:

     ID Name 
         1 D 
         2 B 
         3 E 

欲寫在兩列中查找兩個表的SQL查詢。我想要計數,記錄與表2不匹配(兩列)。

這裏只匹配一條記錄(2 B)。所以,我應該得到2。

謝謝。

+1

我們必須假定這兩個表有記錄相同的數量,以及每個記錄將匹配不超過一個記錄在另一張桌子上。然後我們可以考慮這些術語:在其中一個表中找到總行數減去兩個表中匹配的總行數。 –

+2

我認爲你實際上想要做的是在ID上匹配並查看名稱是否匹配,對嗎?這是一個簡單的連接操作。 –

+0

@ Nick表沒有相同的記錄數,每個記錄可能在第二個表中重複。 – Nani

回答

1

使用not exists計算行table1中的#不在表2

select count(*) from mytable t1 
where not exists (
    select 1 from mytable t2 
    where t2.id = t1.id 
    and t2.name = t1.name 
) 
+0

非常感謝。它爲我工作。但是你在SQL中寫了「Select 1」,爲什麼使用? – Nani

+0

@Nani你可以選擇任何東西,因爲「存在」查詢的選擇部分沒有得到評估。這只是一個偏好問題,我總是使用'select 1'來存在我的查詢。 – FuzzyTree

+0

非常感謝你@FuzzyTree – Nani