我有兩個表。一個表是保存大部分信息的主表。它基本上有兩個重要的列:SQL - COUNT()在兩個表中是GROUP BY一列的表
table2_id
type
第二個表只有其中一列,那就是id。但是,我必須使用GROUP BY類型,因爲這正是我所需要的。但問題的發生是因爲如果我在加入的語句上使用GROUP BY ID,它不會給我正確的信息。我需要其他表來獲得匹配和第一張表不匹配。
示例表1:
id type
100 admin
101 user
102 author
103 editor
104 customer
示例表2:
id
100
100
101
101
110
120
100
100
我的結果需要看起來像:
type total(COUNT()IN TABLE1) intable2andtable1 difference
admin 200 100 100
user 120 100 20
author 205 200 5
editor 80 70 10
customer 300 100 200
所以,我一些如何需要加入和COUNT ()表。我能夠從第一個表中獲得實際總數。但是,如果我嘗試使用ID做任何事情,它會使我將它添加到GROUP BY子句中,這就搞亂了我的結果。
這是我曾嘗試:
SELECT type , count(*) as total
FROM table1
GROUP BY type
,這將返回:
type total(COUNT()IN TABLE1)
admin 200
user 120
author 205
editor 80
customer 300
但是,我不能得到第二個表參與和向我展示了兩者之間的差異。
編輯:這是一個sqlfiddle使其更清晰。 http://sqlfiddle.com/#!15/08951/2/0
你的願望結果應該是'SUM'而不是'COUNT'?因爲計數是2,並且管理員的總數是200。或者我們需要更多的數據,因爲'用戶數'是多少? –
我想你的table1和table2是不完整的,你的樣本數據和你想要的結果之間沒有邏輯關係。嘗試提供 [** SqlFiddle **](http://sqlfiddle.com/#!15/5368b/6),以便我們可以更好地理解問題並以更快的速度給出答案 ,並請閱讀[**如何問**](http://stackoverflow.com/help/how-to-ask) 和[**如何創建一個最小,完整和可驗證的例子。**](http:// stackoverflow。 com/help/mcve) –
對不起。我以爲我很清楚。這是一個小提琴。希望這會更有意義:http://sqlfiddle.com/#!15/08951/2/0 – Lynx