楼主为什么不试试呢?第一句:select A1,(select B2 from B where B.B2 = A.A1) from A首先, 非常有可能Ora-01427错误select A1,(select B3 from B where B.Key_ID = :p_Constant) from A
这样兴许可以通过,因为括号内是一个常数,最后的查询结果集是A1的列表,附带一个Key_ID为给定参数的B3字段值(是常数)select A1,(select 1 from dual) from A这肯定是可行的。第二句,自然就更不用说了。建议楼主认真地去看一下数据库连接地知识。

解决方案 »

  1.   

    第一句话,可以。
    通常写成。
    1。
    SELECT A1,B1
    FROM A,B 
    where B.B1 (+) = A.A1
    2.
    SELECT A1,B1
    FROM A
    LEFT OUTER JOIN B 
    ON B.B1  = A.A1
    第二个句子不对。
    select A1,(select MAX(A1) from (select * from B where B.B1=A.A1) ) from A
    你用在条件上面的A.A1,它应该找不到了。
      

  2.   

    再问个问题:如果SQL语句写成select a,(select count(*)from A T1 where T1.a = T2.a) 
    from A
    这样是可以的。查询成功。
    而且给 (select count(*)from A T1 where T1.a = T2.a) 加一个别名“b”
    也能够查处正确的结果。a    b
    ---- ----
    cc   1但是我没有办法在group by里面访问b如果我再SQL语句后面再加上
    select a,(select count(*)from A T1 where T1.a = T2.a) b
    from A
    group by a,b就抱错,说b这个字段找不到
    有没有办法解决阿?
      

  3.   

    嗬嗬,你上面的写法,是不对的。其实select a,count(*) b
    from A
    group by a这个就是你要的答案。