select * from 
(
select 'a'a 
union all
select 'b'a 
)t1 ,
(
select 'a' aa 
)t2where t1.a *=t2.aa 
提示错误:
此查询使用的不是 ANSI 外部联接运算符("*=" 或 "=*")。若要不进行修改即运行此查询,请使用存储过程 sp_dbcmptlevel 将当前数据库的兼容级别设置为 80 或更低。极力建议使用 ANSI 外部联接运算符(LEFT OUTER JOIN、RIGHT OUTER JOIN)重写此查询。在将来的 SQL Server 版本中,即使在向后兼容模式下,也不支持非 ANSI 联接运算符。

解决方案 »

  1.   

    2005越2000的不兼容
    select * from  
    (
    select 'a'a  
    union all
    select 'b'a  
    )t1 left Outer JOin
    (
    select 'a' aa  
    )t2On t1.a =t2.aa  
      

  2.   


    2005已经取消了*=与=*
    用Left Outer Join与Right Outer JOin代替了select * from   
    (
    select 'a'a   
    union all
    select 'b'a   
    )t1 left Outer Join
    (
    select 'a' aa   
    )t2
    On t1.a =t2.aa  
      

  3.   

    select * from  
    (
    select 'a'a  
    union all
    select 'b'a  
    )t1 ,
    (
    select 'a' aa  
    )t2where t1.a *=t2.aa --把*= 改成=
      

  4.   

    写成left join不就得了
      

  5.   

    select * from   
    (
    select 'a'a   
    union all
    select 'b'a   
    )t1 left Outer Join--left join
    (
    select 'a' aa   
    )t2On t1.a =t2.aa   
      

  6.   


    select * from  
    (
    select 'a'a  
    union all
    select 'b'a  
    )t1 left join 
    (
    select 'a' aa  
    )t2
    on t1.a=t2.aa
    /*
    a    aa
    ---- ----
    a    a
    b    NULL(2 行受影响)*/
      

  7.   

    *= 在oracle里也很少用了,只有在老版本的oracle里才看到