2015-01-17 65 views
1

我有一個數據庫表thanks_entry 的列Mysql的結果返回未分組

- entryid 
- varname 
- userid 
- contenttype 
- contentid 
- dateline 
- receiveduserid 

該表存儲喜歡/感謝給出的數據/接收到的用戶/用戶
我想與用戶統計最喜歡/每月

查詢感謝:

SELECT receiveduserid,COUNT(receiveduserid) AS receivedthanks 
FROM thanks_entry 
WHERE varname ='likes' AND dateline > 1420070400 
AND dateline <1422748800 
GROUP BY userid ORDER BY COUNT(receiveduserid) DESC LIMIT 20 

該查詢應返回結果通過用戶ID分組結果..但看在結果我發現

- receiveduserid|receivedthanks 
- 185883|190 
- 43455|100 
- 163068|85 
- 2|66 
- 186270|49 
- 189468|34 
- 105597|22 
- 2|17 
- 186270|17 
- 163068|16 
- 117147|15 
- 186270|15 
- 186270|14 
- 186643|13 
- 2|12 
- 189170|12 
- 118500|8 
- 2|8 
- 105597|8 
- 2|7 

正如你我雖然grouped by receiveduserid .. receiveduserid 2沒有分組注意到這裏並出現多次.. 我做錯了嗎?

+0

你說'按receiveduserid分組',但是你在你的代碼中寫入'GROUP BY userid'是不是正確? –

+0

OMG! ..是它..我很抱歉! –

回答

1

試試這個:您可能需要以下這

SELECT receiveduserid,COUNT(receiveduserid) AS receivedthanks 
FROM thanks_entry 
WHERE varname ='likes' AND dateline > 1420070400 
AND dateline <1422748800 
GROUP BY receiveduserid ORDER BY receivedthanks DESC LIMIT 20 

而且要由多個列組,然後使用,(逗號),如GROUP BY receiveduserid, another_column第一列是優先級第一..

+0

我很高興看到接受我的答案.. –

0

選擇查詢語句的一部分時應該在查詢語句的部分組中包含字段。

SELECT userid,COUNT(receiveduserid) AS receivedthanks 
    FROM thanks_entry 
    WHERE varname ='likes' AND dateline > 1420070400 
    AND dateline <1422748800 
    GROUP BY userid ORDER BY COUNT(receiveduserid) DESC LIMIT 20