您的位置:首页 > 数据库 > Oracle

Oracle查询错误分析:ORA-01791:不是SELECTed表达式

2014-01-03 11:52 393 查看
表结构如下:

create table HH_BOOK_GOOD
(
ID        VARCHAR2(32) not null,
BOOKID    VARCHAR2(32) not null,
GOODID    VARCHAR2(32) not null,
GOODPRICE FLOAT not null,
GOODNAME  VARCHAR2(256) not null,
GOODNOTE  VARCHAR2(1024) not null
)


使用下面语句进行查询

select distinct ID,BOOKID,GOODPRICE from HH_BOOK_GOOD order by GOODID;

报ORA-01791:不是SELECTed表达式

原因是order by后面的GOODID字段不在select查询结果字段之中,因为使用了distinct关键字。

解决方法
1、将此字段加入到select之后

select distinct ID,BOOKID,GOODPRICE,GOODID from hh_book_good order by GOODID;


2、如果觉得GOODID字段是多余的,实在是不想将它查询出来,可修改为如下:

select ID,BOOKID,GOODPRICE
from(select distinct ID,BOOKID,GOODPRICE,GOODID from HH_BOOK_GOOD)
order by GOODID;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: