【MySQL distinct的使用】如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中
错误语句
SELECT distinct example_column1 FROM test.example_table where delisting_date>now() and product ='CU.SHF' ORDER BY `example_column2` ASC;
报错信息如下:(MySQL-8.0.16可以正常运行,MySQL-5.7报错)
Error Code: 3065. Expression #1 of ORDER BY clause is not in SELECT list, references column ‘test.example_table.example_column2’ which is not in SELECT list; this is incompatible with DISTINCT 0.016 sec
正确语句
SELECT distinct example_column1, example_column2 FROM test.example_table where delisting_date>now() and product ='CU.SHF' ORDER BY `example_column2` ASC;
查询结果
原因解释
MySQL中,如果同时用order by和distinct,那order by后面的字段就必须出现在selcet的字段中。
为什么会出现这种情况?我们来看下原因:
distinct自带排序功能,会先按照distinct后面的字段进行排序,而order by是可以改变distinct自带的排序,所以原因其实就是一个执行先后顺序问题,没有distinct时,order by先执行,select后执行,有了distinct,selcet distinct先执行,order by后执行,如果select distinct执行完后,去除了相应字段,所以order by就没法排序了。
如果你不明白distinct是怎么排序和去重复的,去看下SQL的执行计划就明白了。
【MySQL distinct的使用】如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中相关推荐
- 当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式
当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式. 比如 select * from T_Employee where FNumber not in ( select top 5* ...
- DQL:简单的select语句书写(含where子句)
省略了展示向表中插入数据的语句 create table DEPT(-- 部门表 DEPTNO INT(2) NOT NULL, -- 部门编号 DNAME VARCHAR(14),-- 部门名称 L ...
- java list 截取部分数据_Java List.subList()方法:获取列表中指定范围的子列表
集合类中的 List.subList() 方法用于获取列表中指定范围的子列表,该列表支持原列表所支持的所有可选操作.返回列表中指定范围的子列表. 语法: subList(int fromIndex,i ...
- select选择后生成html,Javascript - 从select中添加选择列表
如何从选择列表中自动生成多个选择列表,如下例所示: 我的代码: HTML: --How many rooms ?-- 1 2 3 JS:$(document).ready(function() { $ ...
- list -- set方法——替换列表中指定位置的元素
set方法用于替换列表中指定位置的元素. 返回值:索引位置替换前的元素. 参数:index用于指定要替换元素所在位置的索引. 参数:element用于指定要存储在指定位置的元素. 示例 本示例使用L ...
- mysql 查询 distinct_MYSQL查询数据(二)SELECT | DISTINCT
MySQL SELECT语句简介 SELECT语句允许您从表或视图获取数据.像电子表格一样,表由行和列组成.通常,您需要查看表中的数据.这时候你可以使用mysql数据库中的select语句进行查询数据 ...
- mysql查询distinct_mysql中select distinct的用法
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但 往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的 ...
- mysql distinct数量_MySQL SELECT DISTINCT和计数?
您需要将GROUP BY命令与MySQL的聚合函数count(*)结合使用才能实现.语法如下:SELECT yourColumnName,COUNT(*) AS anyVariableNameFROM ...
- MySQL Select Distinct什么意思
用来过滤重复值,并且返回唯一的值,比如一个表 Table_1: V1 V2 A 1 B 2 C 3 A 4 B 5 答: SELECT DISTINCT V1 FROM Table_1 V1 A B ...
最新文章
- What are some time-saving tips that every Linux us
- 让Windows下的Tomcat将控制台信息记录到日志
- 一次DB2数据库连接失败(SQLSTATE=08001)的解决方法
- spring mvc框架设计与实现
- 第二模块_找钱:融资与管理_1
- Python -bs4介绍
- 为什么说算法是程序猿“修仙”的必经之地?
- 确认过眼神,你是要来百度AI开发者实战营深圳站的人
- Python_012 CGI编程
- python 字符串加密 唯一数字_python实现字符串加密 生成唯一固定长度字符串
- HTML5权威指南 6.多媒体相关API
- 网络通信协议层的七个部分
- 分享一些我常用的编程字体
- 教你如何选择网络机顶盒
- java生成随机邮箱_Java随机密码生成并和邮箱、手机号匹配
- 10段代码教你玩转C++
- 如何用PPT画出好看的科研图
- c语言陶陶摘苹果数组,关于新手数组:样题:陶陶摘苹果
- 通过页面验证hadoop是否安装成功的方法
- 在Mac上安装Ruby on Rails
热门文章
- CH - 6802 車的放置(二分图最大匹配)
- 中石油训练赛 - Isomorphic Inversion(哈希+贪心)
- Keras-数据增广
- 数据挖掘竞赛-北京PM2.5浓度回归分析训练赛
- 棋子--状态压缩dp
- sscanf函数用法详解
- 手把手教你玩转SOCKET模型:完成端口(Completion Port)详解
- STL 之accumulate,adjacent_difference,inner_product,partial_sum
- 防外挂和防木马的通用解决方案
- GStreamer 的调试工具