需求
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xmp.xmp_comments.authorId' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
说真的,对于不兼容 MySQL 8 这件事,搞得我对这个主题都没什么兴趣了。我们公司一破国企都主用 MySQL 8了现在。
解析
解决方式有两个,一个是关闭只允许 Full Group By,另一个方法就是规范SQL查询语句,我选择当然是规范SQL查询语句啊。
代码
把SQL查询语句改成下面这个就行
Typecho_Db::get()
->select('count(author) AS count', 'mail', 'any_value(author) as author', 'any_value(authorId) as authorId')
->from('table.comments')
->where('created > ?', $period)
->where('status = ?', 'approved')
->where('type = ?', 'comment')
->group('mail')
->order('count', Typecho_Db::SORT_DESC)
->limit(4);
后记
同时顺带一提这主题说是显示30天内互动最多的读者,结果代码里时间写错了
精选留言