错误语句

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 子句中的项就必须出现在选择列表中相关推荐

  1. 当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式

    当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式. 比如 select * from T_Employee where FNumber not in ( select top 5* ...

  2. DQL:简单的select语句书写(含where子句)

    省略了展示向表中插入数据的语句 create table DEPT(-- 部门表 DEPTNO INT(2) NOT NULL, -- 部门编号 DNAME VARCHAR(14),-- 部门名称 L ...

  3. java list 截取部分数据_Java List.subList()方法:获取列表中指定范围的子列表

    集合类中的 List.subList() 方法用于获取列表中指定范围的子列表,该列表支持原列表所支持的所有可选操作.返回列表中指定范围的子列表. 语法: subList(int fromIndex,i ...

  4. select选择后生成html,Javascript - 从select中添加选择列表

    如何从选择列表中自动生成多个选择列表,如下例所示: 我的代码: HTML: --How many rooms ?-- 1 2 3 JS:$(document).ready(function() { $ ...

  5. list -- set方法——替换列表中指定位置的元素

    set方法用于替换列表中指定位置的元素. 返回值:索引位置替换前的元素. 参数:index用于指定要替换元素所在位置的索引. 参数:element用于指定要存储在指定位置的元素. 示例  本示例使用L ...

  6. mysql 查询 distinct_MYSQL查询数据(二)SELECT | DISTINCT

    MySQL SELECT语句简介 SELECT语句允许您从表或视图获取数据.像电子表格一样,表由行和列组成.通常,您需要查看表中的数据.这时候你可以使用mysql数据库中的select语句进行查询数据 ...

  7. mysql查询distinct_mysql中select distinct的用法

    在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但 往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的 ...

  8. mysql distinct数量_MySQL SELECT DISTINCT和计数?

    您需要将GROUP BY命令与MySQL的聚合函数count(*)结合使用才能实现.语法如下:SELECT yourColumnName,COUNT(*) AS anyVariableNameFROM ...

  9. 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 ...

最新文章

  1. What are some time-saving tips that every Linux us
  2. 让Windows下的Tomcat将控制台信息记录到日志
  3. 一次DB2数据库连接失败(SQLSTATE=08001)的解决方法
  4. spring mvc框架设计与实现
  5. 第二模块_找钱:融资与管理_1
  6. Python -bs4介绍
  7. 为什么说算法是程序猿“修仙”的必经之地?
  8. 确认过眼神,你是要来百度AI开发者实战营深圳站的人
  9. Python_012 CGI编程
  10. python 字符串加密 唯一数字_python实现字符串加密 生成唯一固定长度字符串
  11. HTML5权威指南 6.多媒体相关API
  12. 网络通信协议层的七个部分
  13. 分享一些我常用的编程字体
  14. 教你如何选择网络机顶盒
  15. java生成随机邮箱_Java随机密码生成并和邮箱、手机号匹配
  16. 10段代码教你玩转C++
  17. 如何用PPT画出好看的科研图
  18. c语言陶陶摘苹果数组,关于新手数组:样题:陶陶摘苹果
  19. 通过页面验证hadoop是否安装成功的方法
  20. 在Mac上安装Ruby on Rails

热门文章

  1. CH - 6802 車的放置(二分图最大匹配)
  2. 中石油训练赛 - Isomorphic Inversion(哈希+贪心)
  3. Keras-数据增广
  4. 数据挖掘竞赛-北京PM2.5浓度回归分析训练赛
  5. 棋子--状态压缩dp
  6. sscanf函数用法详解
  7. 手把手教你玩转SOCKET模型:完成端口(Completion Port)详解
  8. STL 之accumulate,adjacent_difference,inner_product,partial_sum
  9. 防外挂和防木马的通用解决方案
  10. GStreamer 的调试工具