【发布时间】:2017-05-24 10:04:30
【问题描述】:
我读过http://rpbouman.blogspot.de/2007/05/debunking-group-by-myths.html
和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
得到错误:
包含与功能无关的非聚合列“markusp.ev.updated_time”
我知道将 ev-updated_time 添加到 group by 子句可以解决问题。但我想计算行数,而不是显示用户的每一行。 (计算用户参加的所有活动)。
添加 min(ev.Event_ID) 或 any_value(ev.Event_ID) 并不能解决问题。
我不明白。我的意思是更新时间取决于 User_ID + Event_ID 所以如果我将 User_ID 添加到分组依据和 MIN(Event_ID) 应该可以吗?
【问题讨论】: