DISTINCT结果为ORA-01791:不是SELECTed表达式

use*_*735 24 oracle10g

select DISTINCT a.FNAME||' '||a.LNAME
   from AUTHOR a, books B, BOOKAUTHOR ba, customers C, orders
   where C.firstname='BECCA'
      and C.lastname='NELSON'
      and a.AUTHORID=ba.AUTHORID
      and b.ISBN=bA.ISBN
   order by a.LNAME
Run Code Online (Sandbox Code Playgroud)

给出ORA-01791:不是SELECTed表达式,但没有DISTINCT.

如何使它工作?

Jef*_*emp 25

只需在select子句中将LNAME作为列添加:

SELECT full_name
FROM (
 select DISTINCT a.FNAME||' '||a.LNAME AS full_name, a.LNAME
 from AUTHOR a, books B, BOOKAUTHOR ba, customers C, orders
 where C.firstname='BECCA'
   and C.lastname='NELSON'
   and a.AUTHORID=ba.AUTHORID
   and b.ISBN=bA.ISBN
 )
order by a.LNAME
Run Code Online (Sandbox Code Playgroud)

如果您只想要输出中的第一列,则可以将整个事物放在子查询中.