ORACLE 版本是11.2.0.1.1
select count(1) AS COUNT
FROM A
LEFT JOIN B
ON A.XX = B.XX
出错 ORA-00600 参数[qctopn1]
把LEFT JOIN 改成INNER JOIN后 不出错
或者把 COUNT(1) 改成max(ROWNUM) 后也不出错 为什么?

解决方案 »

  1.   

    这个应该和A表、B表的结构有关系。你可以尝试改成:select count(A.XX) AS COUNT
    FROM A
    LEFT JOIN B
    ON A.XX = B.XX 来统计数量。ORA-00600 报的错应该和SQL解析有关系。
      

  2.   

    改成select count(A.XX) AS COUNT 还是出错
    只有 select max(ROWNUM) as COUNT 好用
      

  3.   


    由于楼主这里求得是count(1),用left join 的话其实就是表A的count了,用max(rownum)可以得到同样的结果,但是inner join 这是更具on condition 的这个condition来匹配的 并不一定能得到上述的结果。而 我没用过11G 所以并不知道楼主的问题在哪里
      

  4.   


    而且我的10G中楼主的count(1)是可以实现的 我这并没出现报错
      

  5.   

    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    测试没问题
      

  6.   

    这个说明 你A表的那个条件和B表那个条件的数据量不相等你用MAX肯定不会有问题 你改成count(A.XXX)应该就不会错了
      

  7.   

    select count(1) AS COUNT
    FROM A
    LEFT JOIN B
    ON A.XX = B.XXB 其实是个VIEW
    现在把那个VIEW的ORDER BY 的一个字段去掉 就不出错了
    不知道什么原因