Oracle 9i数据库,执行下面语句出现错误“ORA-01791: 不是 SELECTed 表达式”:select distinct t.name from

auth_employee t order by t.auth_employee_id asc原来:SELECT语句中含有DISTINCT关键字或者有运算符时,排

序用字段必须与SELECT语句中的字段相对应。网上搜到解释如下:在ORDER BY中指定多个列,结果将先按照子句中

的第一列排序,然后第二个,依此类推。在SELECT中未出现的列名也可用于ORDER BY 子句中,只要TABLE中有就行

。但如果SELECT子句中出现了DISTINCT关键字,则只能用出现过的列名,而且如果SELECT子句中使用了任何运算符

,在ORDER BY 子句中必须保持和SELECT子句中表达式完全一致,否则出现错误:“ORA-01791: 不是 SELECTed 表

达式”。

以下是从网上搜到的一些用Group by、having、order by、Distinct 需要注意的事项

直奔主题,如下SQL语句:

SELECT COUNT(*) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY

REQUEST,METHOD HAVING (REQUEST ='FC.OCEAN.JOB.SERVER.CBIZOZBKHEADER' OR

REQUEST='FC.Ocean.Job.Server.CBizOzDocHeader')

AND COUNT(*) >3

ORDER BY REQUEST注意事项:

HAVING后的条件不能用别名COUNT>3 必须使用COUNT(*) >3,否则报:列名 'COUNT' 无效。

having 子句中的每一个元素并不一定要出现在select列表中

如果把该语句写成:

SELECT COUNT(*) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY

REQUEST ORDER BY REQUEST那么将报:

选择列表中的列 'REQUESTMETH.method' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

注意:

1、使用GROUP BY 子句时,SELECT 列表中的非汇总列必须为GROUP BY 列表中的项。

2、分组时,所有的NULL值分为一组。

3、GROUP BY 列表中一般不允许出现复杂的表达试、显示标题以及SELECT列表中的位置标号。

如:

SELECT REQUEST,METHOD, COUNT(*) AS COUNT FROM REQUESTMETH GROUP BY

REQUEST,2 ORDER BY REQUEST  错误信息为:每个 GROUP BY 表达式都必须包含至少一个列引用。

GROUP BY 中使用 ORDER BY注意事项:

SELECT COUNT(*) AS COUNT FROM REQUESTMETH GROUP BY REQUEST,METHOD ORDER BY REQUEST,METHOD--这样是允许

的, ORDER BY后面的字段包含在GROUP BY 子句中

SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY COUNT(*) DESC --这样是允许的,

ORDER BY后面的字段包含在聚合函数中,结果集同下面语句一样

SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY COUNTS DESC --这样是允许的,区别

于HAVING,HAVING后不允许跟聚集函数的别名作为过滤条件

SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY METHOD--这样是错误的:ORDER BY

子句中的列 "REQUESTMETH.method" 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

SELECT DISTINCT 中使用 ORDER BY注意事项:

SELECT DISTINCT BOOKID FROM BOOK ORDER BY BOOKNAME以上语句将报:

--如果指定了SELECT DISTINCT,那么ORDER BY 子句中的项就必须出现在选择列表中。

因为以上语句类似

SELECT BOOKID FROM BOOK GROUP BY BOOKID ORDER BY BOOKNAME其实错误信息也为:

--ORDER BY子句中的列"BOOK.BookName" 无效,因为该列没有包含在聚合函数或GROUP BY 子句中。

应该改为:

SELECT DISTINCT BOOKID,BOOKNAME FROM BOOK ORDER BY BOOKNAMESELECT DISTINCT BOOKID,BOOKNAME FROM BOOK

SELECT BOOKID,BOOKNAME FROM BOOK GROUP BY BOOKID,BOOKNAME以上两句查询结果是一致的,DISTINCT的语句其实

完全可以等效的转换为GROUP BY语句

oracle 不是selected表达式,查询语句报不是 SELECTed 表达式错误相关推荐

  1. Linux操作Oracle(13)——java执行sql查询语句 报错 “无法绑定由多个部分组成的标识符“ 解决方案

    目录 问题描述: 问题分析 1.sql语句写的有问题 2.java项目 没有及时清理 问题解决

  2. Oracle数据库(表、查询语句、条件查询)的使用

    Oracle数据库 表 表是从属于用户的 查询表 查询表(用户名.表名),当前用户查询自己的表时,用户名.可以省略,其他用户查询 别的用户表 ,不能省略,同时必须存在权限. 表结构 表名 列是字段,字 ...

  3. 执行Hive的查询语句报错:java.lang.IllegalArgumentException: Does not contain a valid host:port authority: loca

    好不容易把Hive装完了,结果一执行Hive的查询语句运行MapReduce程序立马报错... log详细信息如下: Job running in-process (local Hadoop) Had ...

  4. oracle查询 标识无效,oracle查询语句报标识符无效的问题

    请问下这个sql在 select BLDD from(select BLDD,YWDJRQ from POP_MARRIAGE where (ZFID=t.RKBSID or qzid =t.RKBS ...

  5. ORACLE EBS常用表及查询语句(最终整理版)

    建议去看参考二 参考一:                                                              call fnd_global.APPS_INITI ...

  6. jpa oracle 传参int类型判空_SQL查询:Oracle、mysql、HQL查询语句差异

    SQL是结构化查询语言,执行Select(选择).Update(更新).Delete(删除)和Insert(插入)等数据任务. mysql是一个关系型数据库,用于存储和检索数据. 关系数据库是指基于关 ...

  7. ORACLE EBS常用表及查询语句(二)

    1. OU.库存组织 SELECT hou.organization_id ou_org_id, --org_id hou.name ou_name, --ou 名称 ood.organization ...

  8. oracle 基本命令及常用的查询语句

    1.create user username identified by password;//建用户名和密码oracle ,oracle  2.grant connect,resource,dba ...

  9. postgresql中sql查询语句报错处理——ERROR: failed to find conversion function from unknown to text

    执行复杂查询遇到ERROR: failed to find conversion function from unknown to text . 后来通过查资料,原来我里面用到别名了,别名直接用的话会 ...

最新文章

  1. R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
  2. 编程将 .Net Assembly 里的类注册成 COM 类
  3. docker配置dns解决办法
  4. 网络传输中的两个阶段、阻塞IO、非阻塞IO和多路复用
  5. Eclipse启动报错Java was started but returned exit code=13
  6. 2017百度之星程序设计大赛 - 初赛(A)数据分割
  7. BurpSuit配置抓包http和https请求
  8. 运动控制器之追剪应用Demo
  9. Arcgis desktop 9.3的破解方法(转载GIS帝国)
  10. mysql必背50_Mysql必知必会mysql学习笔记(五)
  11. 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以单个空格符隔开,为简单起见,不带标点符号。 例如输入“I am a student”,则通过控制台输出“student a
  12. 读《大四学生收到英国诺丁汉大学博士录取通知书》想到
  13. Flutter组件--重叠布局/相对布局(Stack,Positioned组件)
  14. ipad mini android平板,iPad mini Retina系统是什么?iPad mini2能升级安卓4.3吗?
  15. (三)给亚马逊的EC2增加磁盘空间并安装cuDNN、AutoGluon等
  16. 数据库markdown版ppt生成
  17. win7系统卸载360管家之后无法上网怎么回事?
  18. SAP ABAP VA02、VF01、VF04 SD销售订单增强
  19. MS5351M时钟发生器芯片兼容SI5351-datdsheet
  20. 2012 不宜进入的三个技术点

热门文章

  1. 48V20Ah电池充满需用几度电?能跑多远?很多人还不知道
  2. Maya:让maya更快的十个方法
  3. python面试情景题_50道python笔试面试真题大集合
  4. Html通过CSS建立简单购物网页
  5. Google Play对游戏成就系统的要求和建议
  6. PostgreSQL一些常用命令
  7. Outlook2007设置手册
  8. 顾城 - 我是一个任性的孩子
  9. 12306能删候补订单记录_后补下单什么意思 12306候补下单怎么用
  10. ARM-Linux内核基础知识