表1                表2
  F1  F2  F3       F4  F2   F5
  1    A  AA       B   A    BB
  2    C  CC       D   C    DD
  3    E  EE
  4    F  FF
 
结果
表3
  F1  F2  F3  F4  F5
  1   A   AA  B   BB
  2   C   CC  D   DD
  3   E   EE  X   X
  4   F   FF  X   X
表1与表2通过字段F2关联,如在表2的F2字段中未找到表1字段F2中值,则将表3的F4,F5的值为X ,否则表3中F4,F5的值为表2的F4、F5值
  SQL语句怎么写???

解决方案 »

  1.   

    我只知道MYSQL4.0是实现不了的。
      

  2.   

    sqlserver 2000 下实现!!!!
      

  3.   

    select a.F1,a.F2,a.F3,b.F4,b.F5 from 表1 a,表2 b where a.F2=b.F2
    union
    select a.F1,a.F2,a.F3,X as F4,X as F5 from 表1 a,表2 b where a.F2<>b.F2不知行不行
      

  4.   

    试试看,左连接
    select A.F1 as F1, 
           A.F2 as F2,
           A.F3 as F3, 
           IsNull(B.F4, 'X') as F4, 
           IsNull(B.F5, 'X') as F5
      from 表1 A left jion 表2 B on A.F2 = B.F2
      

  5.   

    //ORACLE测试通过
    select F1,F2,F3,F4,F5 
    from A,B
    where A.F2=B.F2
    union
    select F1,F2,F3,X as F4,X as F5 
    from A,B where A.F2<>B.F2
      

  6.   

    不好意思,改的时候有点问题,F2变成A.F2
      

  7.   

    同意 qybao(阿宝)的方法
    select A.F1 as F1, 
           A.F2 as F2,
           A.F3 as F3, 
           IsNull(B.F4, 'X') as F4, 
           IsNull(B.F5, 'X') as F5
      from 表1 A left jion 表2 B on A.F2 = B.F2
      

  8.   


    select A.F1,A.F2,A.F3,F4,F5 
    from  A,B
    where A.F2=B.F2 and A.F2 in (select * from A where A.F2=B.F2)
    union
    select A.F1,A.F2,A.F3,'X'as F4,'X'as F5 
    from  A
    where A.F2 not in (select * from A where A.F2<>B.F2)
      

  9.   

    select A.F1,A.F2,A.F3,F4,F5 
    from  A,B
    where A.F2=B.F2 and A.F2 in (select * from A where A.F2=B.F2)
    union
    select A.F1,A.F2,A.F3,'X'as F4,'X'as F5 
    from  A
    where A.F2  in (select * from A where A.F2<>B.F2)//刚才多了个not
      

  10.   

    Create Table 表1(f1 varchar(10),f2 varchar(10),f3 varchar(10))
    --插入数据
    insert into 表1select '1','A','AA' union
    select '2','C','CC' union
    select '3','E','EE' union
    select '4','F','FF'
    --select * from 表1 
    --建立测试环境
    Create Table 表2(f4 varchar(10),f2 varchar(10),f5 varchar(10))
    --插入数据
    insert into 表2
    select 'B','A','BB' union
    select 'D','C','DD' --select * from 表2
    select 表1.f1,表1.f2,表1.f3,ISNULL(表2.f4,'X'),ISNULL(表2.f5,'X') from 表1
    left join 表2 
    on 表2.f2=表1.f2
     
    --删除测试环境
    Drop Table 表2
     
    --删除测试环境
    Drop Table 表1
      

  11.   

    --结果:
    f1         f2         f3                               
    ---------- ---------- ---------- ---------- ---------- 
    1          A          AA         B          BB
    2          C          CC         D          DD
    3          E          EE         X          X
    4          F          FF         X          X
      

  12.   

    f4和f5别名没写
    ISNULL(表2.f4,'X') f4,
    ISNULL(表2.f5,'X') f5,
      

  13.   

    楼主按照 whbo(王红波(年轻人,要有所作为)) 的写法就OK啦.
    不要用 union
    效率不高,而且要用的话也应该用union all ,不然查询结果有重复记录的话会被过滤掉