oracle 不是selected表达式,查询语句报不是 SELECTed 表达式错误
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 表达式错误相关推荐
- Linux操作Oracle(13)——java执行sql查询语句 报错 “无法绑定由多个部分组成的标识符“ 解决方案
目录 问题描述: 问题分析 1.sql语句写的有问题 2.java项目 没有及时清理 问题解决
- Oracle数据库(表、查询语句、条件查询)的使用
Oracle数据库 表 表是从属于用户的 查询表 查询表(用户名.表名),当前用户查询自己的表时,用户名.可以省略,其他用户查询 别的用户表 ,不能省略,同时必须存在权限. 表结构 表名 列是字段,字 ...
- 执行Hive的查询语句报错:java.lang.IllegalArgumentException: Does not contain a valid host:port authority: loca
好不容易把Hive装完了,结果一执行Hive的查询语句运行MapReduce程序立马报错... log详细信息如下: Job running in-process (local Hadoop) Had ...
- oracle查询 标识无效,oracle查询语句报标识符无效的问题
请问下这个sql在 select BLDD from(select BLDD,YWDJRQ from POP_MARRIAGE where (ZFID=t.RKBSID or qzid =t.RKBS ...
- ORACLE EBS常用表及查询语句(最终整理版)
建议去看参考二 参考一: call fnd_global.APPS_INITI ...
- jpa oracle 传参int类型判空_SQL查询:Oracle、mysql、HQL查询语句差异
SQL是结构化查询语言,执行Select(选择).Update(更新).Delete(删除)和Insert(插入)等数据任务. mysql是一个关系型数据库,用于存储和检索数据. 关系数据库是指基于关 ...
- ORACLE EBS常用表及查询语句(二)
1. OU.库存组织 SELECT hou.organization_id ou_org_id, --org_id hou.name ou_name, --ou 名称 ood.organization ...
- oracle 基本命令及常用的查询语句
1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba ...
- postgresql中sql查询语句报错处理——ERROR: failed to find conversion function from unknown to text
执行复杂查询遇到ERROR: failed to find conversion function from unknown to text . 后来通过查资料,原来我里面用到别名了,别名直接用的话会 ...
最新文章
- R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
- 编程将 .Net Assembly 里的类注册成 COM 类
- docker配置dns解决办法
- 网络传输中的两个阶段、阻塞IO、非阻塞IO和多路复用
- Eclipse启动报错Java was started but returned exit code=13
- 2017百度之星程序设计大赛 - 初赛(A)数据分割
- BurpSuit配置抓包http和https请求
- 运动控制器之追剪应用Demo
- Arcgis desktop 9.3的破解方法(转载GIS帝国)
- mysql必背50_Mysql必知必会mysql学习笔记(五)
- 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以单个空格符隔开,为简单起见,不带标点符号。 例如输入“I am a student”,则通过控制台输出“student a
- 读《大四学生收到英国诺丁汉大学博士录取通知书》想到
- Flutter组件--重叠布局/相对布局(Stack,Positioned组件)
- ipad mini android平板,iPad mini Retina系统是什么?iPad mini2能升级安卓4.3吗?
- (三)给亚马逊的EC2增加磁盘空间并安装cuDNN、AutoGluon等
- 数据库markdown版ppt生成
- win7系统卸载360管家之后无法上网怎么回事?
- SAP ABAP VA02、VF01、VF04 SD销售订单增强
- MS5351M时钟发生器芯片兼容SI5351-datdsheet
- 2012 不宜进入的三个技术点