Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'employee.employee.e_no' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
这是一个 SQL 查询错误,意思是您的查询中包含了一个非聚合列,但是在 GROUP BY 子句中没有出现。在严格模式下,MySQL 要求 GROUP BY 中的列必须涵盖所有 SELECT 中的非聚合列。
解决该问题的方法有两种:
在 SELECT 子句中包含所有在 GROUP BY 子句中的列。
禁用 MySQL 的严格模式,可以通过修改 MySQL 的配置文件或者在查询中设置 sql_mode 来实现。例如,可以使用以下语句来禁用严格模式:
SET sql_mode = '';
请注意,禁用严格模式可能会导致一些潜在的问题,因此应该谨慎使用。
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'smart.sm_c_talking_content_info.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
这个错误提示是因为MySQL数据库的sql_mode参数设置了only_full_group_by模式,该模式要求在GROUP BY语句中必须包含所有SELECT的字段,或者使用聚合函数对没有包含在GROUP BY语句中的字段进行聚合。如果某个字段在GROUP BY语句中没有出现,同时也没有使用聚合函数进行聚合,就会出现上述错误。
解决这个问题的方法有两种:
修改sql_mode参数,将其设置为非only_full_group_by模式。可以通过以下命令查看当前的sql_mode参数:
SELECT @@sql_mode;
如果结果中包含only_full_group_by,则说明当前设置为该模式。可以通过以下命令将其修改为默认模式:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
注意,修改全局的sql_mode参数可能会影响其他应用程序的正常运行,因此需要谨慎操作。
在GROUP BY语句中包含所有SELECT的字段,或者使用聚合函数对没有包含在GROUP BY语句中的字段进行聚合。例如:
SELECT id, MAX(name) FROM table1 GROUP BY id;
上述语句中,虽然只有id和name两个字段被SELECT出来,但是在GROUP BY语句中包含了id字段,同时使用了MAX函数对name字段进行了聚合,因此不会出现上述错误。
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'feiyuan.e.add_time' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
这个错误是由于在查询语句中,SELECT列表中的表达式没有在GROUP BY子句中,并且包含了一个非聚合的列。这在MySQL的sql_mode设置为only_full_group_by时是不允许的。
要解决这个问题,你可以采取以下几种方法之一:
将该非聚合列添加到GROUP BY子句中。例如,如果你的查询是类似于SELECT a, b, MAX(c) FROM table GROUP BY a;,你可以更改为SELECT a, b, MAX(c) FROM table GROUP BY a, b;。
使用聚合函数对该非聚合列进行计算。例如,如果你的查询是类似于SELECT a, b, c FROM table GROUP BY a;,你可以更改为SELECT a, b, MAX(c) FROM table GROUP BY a;。
修改MySQL的sql_mode设置,将其设置为允许非聚合列不在GROUP BY子句中。例如,你可以使用以下语句修改sql_mode:SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
记住,在修改sql_mode设置时要谨慎,确保不会引入其他潜在的问题。
相关推荐

















