【问题标题】:Non aggregated Column with Count具有计数的非聚合列
【发布时间】:2021-04-04 02:02:38
【问题描述】:

我对 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
     

【问题讨论】:

    标签: php mysql phpmyadmin


    【解决方案1】:

    问题在于SELECT * 中的*

    您要求 MySQL 返回目标表中的每一列,但其中一些未聚合 (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
     
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      相关资源
      最近更新 更多