刚刚写的SQL语句在执行的时候报【ORA-01785: ORDER BY item must be the number of a SELECT-list expression】错误,于是自己百度了一下相关错误,发现是和Oracle排序语句的特殊写法有关系,这里记录一下。

先不说错误的问题,我们先用常规的写法写一句带排序子句的SQL语句。

SELECT ID, CODE, NAME FROM STUDENT ORDER BY CODE;

这样写是能够正常执行的。

然后说一下排序子句的特殊写法。特殊的写法就是在ORDER BY排序子句中,可以用数字(相当于下标 + 1)代替要用来排序的字段。比如说上面的SQL语句,用来排序的字段是CODE,它在前面的SELECT子句的字段中排第二位,那么就可以用数字2来代替它。

SELECT ID, CODE, NAME FROM STUDENT ORDER BY 2;

这样查询出来的结果和上面的语句查询出来的结果是一样的。

然后我们来做个试验,把ORDER BY子句中的数字改成4试一下,这时数字4在前面的SELECT子句中是没有对应的字段的,因为SELECT子句中只有三个字段。

SELECT ID, CODE, NAME FROM STUDENT ORDER BY 4;

不出意料的,报ORA-01785的错误了。

到这里我们就可以明白,这个错误是因为ORDER BY子句中的数字代表的字段位数超出SELECT子句中的字段个数引起的。意思就是说,当SELECT子句中的字段有5个,那么ORDER BY子句中的数字就不能大于5,范围区间是[1,5]。

当然,也可以进行多个字段排序和升序降序排序的。

SELECT ID, CODE, NAME FROM STUDENT ORDER BY 2 DESC, 3;

看到这里,当下次遇到ORA-01785错误的时候,聪明的你就知道怎么解决啦。

"夕阳无限好,只是近黄昏。"

oracle排序子句的特殊写法与ORA-01785错误的更多相关文章

  1. Oracle分页查询语句的写法(转)

    Oracle分页查询语句的写法(转)   分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. Oracle分页查询语句使我们最常用的 ...

  2. Oracle Fetch子句

    Oracle Fetch子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,将学习如何使用Oracle FETCH子句来限制查询返回的行数. ...

  3. Oracle存储过程中跳出循环的写法

    注:本文来源于: <  Oracle存储过程中跳出循环的写法   > Oracle存储过程中跳出循环的写法 记录exit和return的用法 1:exit用来跳出循环 loop IF V_ ...

  4. PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora原理解释

    PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora原理解释 oracle网络配置三个配置文件 lis ...

  5. ORDER BY排序子句

    10.ORDER BY排序子句   用于指定将查询结果排序的字段.     //查询emp表所有记录,结果按ename升序排列   select empno,ename   from emp   or ...

  6. Oracle Like子句

    Oracle Like子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,您将学习如何使用Oracle LIKE运算符来测试列中的值是否与指定 ...

  7. Oracle Between子句

    Oracle Between子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,您将学习如何使用Oracle BETWEEN运算符来选择值在一 ...

  8. Oracle In子句

    Oracle In子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,您将学习如何使用Oracle IN运算符来确定值是否与列表或子查询中的任 ...

  9. Oracle Or子句

    Oracle Or子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,我们来学习如何使用Oracle OR运算符来组合两个或更多的布尔表达式. ...

随机推荐

  1. 部署asp.net core Kestrel 支持https 使用openssl自签ssl证书

    通过openssl生成证书 openssl req -newkey rsa:2048 -nodes -keyout my.key -x509 -days 365 -out my.cer openssl ...

  2. MongoDB系列---集合与文档操作03

    MongoDB-——Collection 学习大纲: 1.集合操作 2.文档操作 知识回顾: 上一篇我们讲述了如何对MongoDB的权限和用户进行日常的基本操作,来达到我们对数据库的基本安全保障. 一 ...

  3. ASP.NET Core快速入门--学习笔记系列文章索引目录

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 抓住国庆假期的尾巴完成了此系列课程的学习笔记输出! ASP.NET Core快 ...

  4. hello tensorflow,我的第一个tensorflow程序

    上代码: import tensorflow as tf if __name__=='__main__': g = tf.Graph() # add ops to the user created g ...

  5. Protobuffer学习文档

    官方EN:https://developers.google.com/protocol-buffers/docs/pythontutorial 中文:https://cloud.tencent.com ...

  6. maven下载,安装,配置

    Eclipse配置maven  官网:http://maven.apache.org/ 1.解压你在maven下载到的压缩包,一般把它和jdk放在一起. 2.安装maven在电脑上. 鼠标右键点击计算 ...

  7. PHP odbc_errormsg ODBC 函数

    定义和用法 odbc_errormsg - 获取最后一条错误消息 语法 odbc_errormsg ( [ resource $connection_id ] ) 返回包含最后一个ODBC错误消息的字 ...

  8. js验证手机号、身份证等

    //验证手机号function check_lxdh(lxdh){ var mobile = /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0 ...

  9. 程序员编程时常用的mac快捷方式

    fn + F2/F3 = 调节音量 commend + shift +k = 显示或隐藏键盘 commend+shift +h = iPhone返回主页面 commend+ shift + hh = ...

  10. emmet的用法

    emmet 是一个提高前端开发效率的一个工具.emmet允许在html.xml.和css等文档中输入缩写,然后按tab键自动展开为完整的代码片段. 一.Sublime Text 3 安装插件Emmet ...