2013-02-28 82 views
4

我試圖構建兩個表具有相同的結構比較查詢比較標識符的計數使用SQL從兩個表中

Table 1: 
ID | Data 

Table 2: 
ID | Data 

ID是不唯一的密鑰(數據是重複的,但ID |數據連擊是獨特)。我需要ID的列表,這些ID的計數大於表1

因此,例如更大的表2中,如果

Table 1 
a | data 
a | data1  
b | data2 

Table 2 
a | data 
a | data1 
b | data2 
b | data3 

會產生輸出「B」

這感覺應該很容易,但現在我的腦袋被打亂了。我在mysql中這樣做,如果這影響選項。

回答

3

得到計數爲每個鍵,

select count(*) as count, ID from Table1 group by ID 

所以,以此爲FROM子句中的一個子查詢,並加入表。

select tt1.ID 
from (select count(*) as count, ID from Table1 group by ID) tt1 
    inner join (select count(*) as count, ID from Table2 group by ID) tt2 
    on tt1.ID = tt2.ID 
where tt1.count < tt2.count 
+1

mysql是否允許選擇查詢在哪裏你不選擇任何東西? – 2013-02-28 20:00:47

+0

我的錯誤。我會編輯答案。 – 2013-02-28 20:03:37

+0

非常好的答案...它也解決了我的問題。謝謝 – Kishore 2015-10-20 11:19:22

0

經過MySQL測試。

select case when count(d1.id) > count(d2.id) then d1.id end as 'id' from 
(select id from t1) d1, 
(select id from t2) d2 
group by d1.id 
+0

我也喜歡這個解決方案,因爲我之前沒有在MySQL中使用select case。但這個地方只能讓我選擇一個正確的答案,而另一個似乎可以推廣到更多的情況。 – 2013-03-01 13:48:18