MYSQL查询语句报1 of ORDER BY clause is not in SELECT list

我的语句如下:

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查询模式有关!

 

posted @ 2024-06-17 13:44  高佳丰  阅读(33)  评论(0编辑  收藏  举报