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查询模式有关!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了