我讀http://rpbouman.blogspot.de/2007/05/debunking-group-by-myths.html簡單的MySQL 5.7 only_full_group_by計數
和http://rpbouman.blogspot.nl/2014/09/mysql-575-group-by-respects-functional.html
,但仍然得到錯誤試圖重寫一個簡單的MySQL查詢...
表:Event_Visitors
Event_ID | User_ID |user_level |rsvp_status | updated_time foreign int(11)| foreign int(11) | int(3) | int(3) | timestamp (onupdate)
這是我的兩個外鍵的表。 現在我想請執行以下查詢:
SELECT min(ev.Event_ID), ev.User_ID, ev.rsvp_status, ev.updated_time, count(*) FROM EVENT_VISITORS ev GROUP BY ev.User_ID ORDER BY ev.updated_time DESC
而得到的錯誤:
contains nonaggregated column 'markusp.ev.updated_time' which is not functionally dependent
我知道by子句將EV-updated_time到組解決該問題。但我想要統計行數並且不顯示用戶的每一行。 (統計用戶參加的所有事件)。
Adding min(ev.Event_ID) or any_value(ev.Event_ID) doesnt fix the problem.
我不明白。我的意思更新時間取決於USER_ID + EVENT_ID所以如果我添加USER_ID到GROUP BY和MIN(EVENT_ID)應該工作?
如果我的推杆在GROUP_BY所有的非聚集列,它不會被「分組」。在上面的查詢中,我將獲得每個用戶的數量,這些用戶是按照rsvp進行分組和更新的時間。我想要的是某些用戶正在參與的所有事件(不同的user_id)並對行進行計數。 – Markus
P.S.第二個查詢失敗的原因是按順序by子句中的MAX(ev.updated_time)。 – Markus
@Markus。 。 。第二個查詢應該正是因爲'ORDER BY'中的'MAX()'而工作。 –