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

表结构如下:

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;


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值