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;

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/database/4138.html

(0)
上一篇 2021年7月16日 18:38
下一篇 2021年7月16日 18:39

相关推荐

发表回复

登录后才能评论