我的语句如下:
SELECT DISTINCT r.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 FROM alarm_rule r, alarm_rule_parms p WHERE r.id = p.alarm_rule_id ORDER BY r.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查询模式有关!
标签:语句,clause,alarm,list,查询,MYSQL,ORDER,id,SELECT From: https://www.cnblogs.com/ggborn-001/p/18252220