带计数的非聚合列

Non aggregated Column with Count

我是 MySQL 的新手,我正在尝试制作一个统计和显示点赞数的活动页面。 我收到错误:

Error details: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #10 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db.events_likes.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

我无法更改 SQL 模式,所以我想知道是否有聚合列的方法?

代码:

SELECT  *, eventid, COUNT(events_likes.id) AS likes, GROUP_CONCAT(users.fname SEPARATOR '|') AS liked_by FROM  events
     LEFT JOIN events_likes 
     ON events.eventid = events_likes.event

     LEFT JOIN users
     ON events_likes.user = users.id
     GROUP BY events.eventid
     

问题出在 SELECT *

中的 *

您要求 MySQL 到 return 目标表中的每一列,但其中一些未聚合 (event_likes.id)。

仅列出您需要的列。

SELECT  eventid, COUNT(events_likes.id) AS likes, GROUP_CONCAT(users.fname SEPARATOR '|') AS liked_by FROM  events
 LEFT JOIN events_likes 
 ON events.eventid = events_likes.event

 LEFT JOIN users
 ON events_likes.user = users.id
 GROUP BY events.eventid