【问题标题】:DISTINCT results in ORA-01791: not a SELECTed expressionDISTINCT 导致 ORA-01791:不是 SELECTed 表达式
【发布时间】:2011-03-31 22:21:44
【问题描述】:
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

给出 ORA-01791: not a SELECTed expression 但无需 DISTINCT 即可工作。

如何让它发挥作用?

【问题讨论】:

    标签: oracle10g


    【解决方案1】:

    只需在 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
    

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

    【讨论】:

    • 效果很好。但是有没有办法按 lname 排序而不将其显示为单独的列?
    猜你喜欢
    • 2015-10-19
    • 2017-02-04
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多