那left join 在oracle上就要出错吗?

解决方案 »

  1.   

    是啊,在ORACLE中是OUTER JOIN(外连接),其用法是:
    a.id = b.id(+)或a.id(+) = b.id
    (+)位于需要补足数据的表的一方。
      

  2.   

    select a.id,a.time,a.data,b.time,b.data
    from data a left join data b on a.id
    这条语句怎样改成表连接,使得在各种数据库中都通用
      

  3.   

    ---oracle9i才有left join,8i以下:create table dali.test1(a int,b int);
    create table dali.test2(a int,b int);insert into dali.test1 values(1,456);
    insert into dali.test1 values(2,427);
    insert into dali.test2 values(1,45456);
    insert into dali.test2 values(3,45656);---内连接
    select * from dali.test1 a, dali.test2 b where a.a=b.a;---左连接
    select * from dali.test1 a, dali.test2 b where a.a=b.a(+);---右连接
    select * from dali.test1 a, dali.test2 b where a.a(+)=b.a;---完全连接
    select * from dali.test1 a, dali.test2 b where a.a=b.a(+)
    union
    select * from dali.test1 a, dali.test2 b where a.a(+)=b.a;---迪卡尔
    select * from dali.test1, dali.test2;
      

  4.   

    我要的是在各个数据库中都通用的语句阿,你写的在oracle中可以,在sql server中就不行了
      

  5.   

    select a.fd_meter_joint as 表号,a.fzdate as 最后一次时间,a.data as 最后一次数据,b.fzdate as 倒数第二次时间,b.data as 倒数第二次数据 from (
    select * from freezedata as tem where fzdate=(select max(fzdate) from freezedata where fd_meter_joint=tem.fd_meter_joint)
    ) as a left join (
    select * from freezedata as tem where fzdate=(select max(fzdate) from freezedata where fd_meter_joint=tem.fd_meter_joint and fzdate<>(select max(fzdate) from freezedata where fd_meter_joint=tem.fd_meter_joint))
    ) as b on a.fd_meter_joint=b.fd_meter_joint大力,这是你给我写的,能不能给我改一下,把left join去掉,而且在各个数据库中都通用,谢谢
      

  6.   

    支持左连接,但是没有left join得关键字