有结果集A
id name grade
1 zhanglin null
2 wangtao  80
3 zhaobin  null有结果集B
id name grade
1 zhanglin 88
2 wangtao  null
3 zhaobin  null希望这样查询select A.id,a.name,case when A.grade IS null then B.grade else A.grade end
得到如下记录
1 zhanglin 88   (from B)
2 wangtao  80   (from A)
3 zhaobin  null (from B)

解决方案 »

  1.   

    select a.id,a.name,COALESCE(a.grade,b.grade)
    from a,b
    where a.id=b.id
      

  2.   

    select a.id,a.name,COALESCE(a.grade,b.grade)
    from a inner join b on a.id=b.id
    or
    select a.id,a.name,case when A.grade IS null then B.grade else A.grade end
    from a inner join b on a.id=b.id
      

  3.   

    select a.id,a.name,if(A.grade is null,B.grade,A.grade) as grade
    from a inner join b on a.id=b.id