当我尝试在CodeIgniter 3中运行此查询时,它给了我这个错误:

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'forum.phrases.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

SELECT `id`, `keyword`, `value`, `language` FROM `phrases` GROUP BY `language`


PHP:

$query = $this->db->select("id, keyword, value, language")
            ->group_by("language")
            ->get("phrases")
            ->result();


我已经用谷歌搜索了一下,但是我不太理解答案,主要是因为查询与CI不相关并且非常复杂...如何在codeigniter中解决此问题?

我不想更改任何MySQL设置。

最佳答案

这不是CodeIgniter特有的问题-它是SQL标准的一部分,内置在MySQL中。它的存在使它可以验证您的数据并鼓励良好的数据库设计和查询。您有两个解决方案:


您可以以“正确”的方式编写查询。这是SQL92规范的问题,但后来在SQL99标准中进行了修改,以允许使用非聚合:https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
另一种方法(也是更常见的响应)是修改my.cnf文件并禁用only_full_group_by的强制SQL模式。 Disable ONLY_FULL_GROUP_BY

10-05 22:35
查看更多