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

我的语句如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
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`

1
2
3
4
5
# 查询SQL模式
SELECT @@sql_mode;
 
# 全局禁用ONLY_FULL_GROUP_BY
SET GLOBAL sql_mode = (SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));

  此处与SQL查询模式有关!

 

posted @   高佳丰  阅读(155)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示