2016-01-27 35 views
0

我想獲得每個FANOF_ID(例如:我)的總票數。問題是,一個人都可以投票每一天同一FANOF_ID(例如:大衛·鮑伊RIP)mySQL聲明得到最後一個記錄

所以每一天我都可以從例如投票大衛·鮑伊是我最喜歡的歌手

ID CREATED FAN_ID FANOF_ID 
15 2016-01-24 3  3 
16 2016-01-25 3  3 
17 2016-01-25 2  3 

所以我應該得到的2個風扇爲FANOF_ID「總」的結果(3)

這是我的實際SQL

SELECT 
    distinct `fans_fanofvote`.`fan_id`, 
    COUNT(`fans_fanofvote`.`fanof_id`) AS `total` 
FROM `fans_fanofvote` 
GROUP BY `fans_fanofvote`.`fanof_id` 
ORDER BY `total` DESC 

但是即使我在fan_id它不會工作使用不同返回3條記錄。我怎樣才能讓MySQL做不同的FAN_ID

我的SQL應該返回一條記錄這樣的:

FANOF_ID TOTAL 
3  2 

回答

1

你想COUNT(DISTINCT)。但是,你必須要小心你指望(fan_id),你被(fanof_id聚集的):

SELECT fov.fanof_id, 
     COUNT(DISTINCT fov.fan_id) AS total 
FROM fans_fanofvote fov 
GROUP BY fov.fanof_id 
ORDER BY total DESC; 

注意,表的別名使查詢更容易閱讀。除非真的需要,否則不要使用back tick。

1

你沒有提到預期的輸出更早所以這是令人困惑的。

SELECT 
    `fans_fanofvote`.`fanof_id`, 
    COUNT(`fans_fanofvote`.`fan_id`) AS `total` 
FROM `fans_fanofvote` 
GROUP BY `fans_fanofvote`.`fanof_id` 
ORDER BY `total` DESC 
+0

如果我這樣做,我會得到2條記錄,因爲它們是由fan_id組成的。 –

+0

它們按fan_id和fanod_id分組。添加更多的記錄,然後檢查。 – Shaharyar

+0

我做過了,每個粉絲ID都有一個新記錄 –

0

使用次數(不同的)

SELECT 

    COUNT(distinct `fans_fanofvote`.`fanof_id`) AS `total` 
FROM `fans_fanofvote` 
GROUP BY `fans_fanofvote`.`fanof_id` 
ORDER BY `tot 
相關問題