我的语句如下:
SELECT DISTINCTr.id,r.device_model_id,r.device_model_name,r.alarm_type_id,r.alarm_type_name,r.alarm_level,r.filter_condition,r.filter_condition_value,r.offline_tag,p.param_data_id,p.parms FROMalarm_rule r,alarm_rule_parms p WHEREr.id = p.alarm_rule_id ORDER BYr.update_date DESC LIMIT 10;
执行报了如下错误:
1 of ORDER BY clause is not in SELECT list, references column 'general_mills.r.update_date' which is not in SELECT list; this is incompatible with DISTINCT
这里原因提示的很清楚我的SELECT语句中,没有包含GROUP BY排序的依据字段`r.update_date`,在语句中加上就可以解决此问题。
但是此处我并没有这么做,因为这是程序报错日志中内容,可能还有很多地方查询都是这种方式进行的,所以应该有其他配置项来支持以上的查询语句能得出结果的。
SQL禁用`ONLY_FULL_GROUP_BY`
# 查询SQL模式 SELECT @@sql_mode;# 全局禁用ONLY_FULL_GROUP_BY SET GLOBAL sql_mode = (SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
此处与SQL查询模式有关!