1、单独执行下列语句OK
  select c,min(oper_id) c_id
  from tt
  group by c
2、加上子查询:
select c,(select name from users where user_id=c_id)
from
(
  select c,min(oper_id) c_id
  from tt
  group by c
) ss
执行报告ORA-00979 不是GROUP BY表达式3、加上关联dual就OK
select c,(select user_name from users where user_id=u_id)
from
(
  select c,min(oper_id) u_id
  from tt
  group by c
) ss,dual奇怪吧??

解决方案 »

  1.   

    从未写过这种奇怪的SQL一般都这样写吧
    select c,user_name
    from 

      select c,min(oper_id) c_id 
      from tt 
      group by c 
    ) ss,users
    where ss.cid=users.user_id
      

  2.   

    执行计划选择的问题,可以认为是个bug。添加hint后就不会报错了,如下:SELECT /*+ NO_MERGE(ss) */
     C, (SELECT NAME FROM USERS WHERE USER_ID = C_ID)
      FROM (SELECT C, MIN(OPER_ID) C_ID FROM TT GROUP BY C) SS;
      

  3.   

    oracledbalgtu 真是高手啊,oracle也有这种bug,真是搞笑