create table #a(学号 varchar(10),成绩 int)
INSERT #a SELECT '001','99'
INSERT #a SELECT '002','100'create table #b(学号 varchar(10),姓名 varchar(10))
INSERT #b SELECT '001','小红'
INSERT #b SELECT '002','小名'
INSERT #b SELECT '002','小蓝'create table #c(学号 varchar(10),标志 varchar(10))
INSERT #c SELECT '001','是'
INSERT #c SELECT '888','是'
INSERT #c SELECT '002','否'有上面三张表
条件是#c标志等于“是”的
查询后的效果是:
学号   姓名   成绩
001    小红    99
888     空      0

解决方案 »

  1.   

    SELECT A.学号,B.姓名,A.成绩 FROM #A A,#B B,#C C 
    WHERE A.学号=B.学号 AND A.学号=C.学号 AND C.标志='是'
      

  2.   

    select A.学号,姓名,成绩 from #a A,#b B,#c C
    where A.学号=B.学号 and B.学号=C.学号 and C.标志='是'
      

  3.   

    create table #a(学号 varchar(10),成绩 int)
    INSERT #a SELECT '001','99'
    INSERT #a SELECT '002','100'create table #b(学号 varchar(10),姓名 varchar(10))
    INSERT #b SELECT '001','小红'
    INSERT #b SELECT '002','小名'
    INSERT #b SELECT '002','小蓝'create table #c(学号 varchar(10),标志 varchar(10))
    INSERT #c SELECT '001','是'
    INSERT #c SELECT '888','是'
    INSERT #c SELECT '002','否'
    select c.学号,b.姓名,isnull(a.成绩,0) 成绩
    from #a a
    join #b b on a.学号=b.学号
    right join #c c on a.学号=c.学号
    where c.标志='是'
    /*
    学号         姓名         成绩
    ---------- ---------- -----------
    001        小红         99
    888        NULL       0(2 行受影响)
    */
      

  4.   

    create table #a(学号 varchar(10),成绩 int)
    INSERT #a SELECT '001','99'
    INSERT #a SELECT '002','100'create table #b(学号 varchar(10),姓名 varchar(10))
    INSERT #b SELECT '001','小红'
    INSERT #b SELECT '002','小名'
    INSERT #b SELECT '002','小蓝'create table #c(学号 varchar(10),标志 varchar(10))
    INSERT #c SELECT '001','是'
    INSERT #c SELECT '888','是'
    INSERT #c SELECT '002','否'select isnull(A.学号,C.学号) 学号,B.姓名,A.成绩 from #a
     A right join 
    (
      select * from #c where 标志='是'
    )
     C
    on A.学号=C.学号
    left join #b B
    on A.学号=B.学号学号         姓名         成绩
    ---------- ---------- -----------
    001        小红         99
    888        NULL       NULL(2 行受影响)
      

  5.   

    create table #a(学号 varchar(10),成绩 int)
    INSERT #a SELECT '001','99'
    INSERT #a SELECT '002','100'create table #b(学号 varchar(10),姓名 varchar(10))
    INSERT #b SELECT '001','小红'
    INSERT #b SELECT '002','小名'
    INSERT #b SELECT '002','小蓝'create table #c(学号 varchar(10),标志 varchar(10))
    INSERT #c SELECT '001','是'
    INSERT #c SELECT '888','是'
    INSERT #c SELECT '002','否'select isnull(A.学号,C.学号) 学号,isnull(B.姓名,'空') 姓名,isnull(A.成绩,0) 成绩 from #a
     A right join 
    (
      select * from #c where 标志='是'
    )
     C
    on A.学号=C.学号
    left join #b B
    on A.学号=B.学号学号         姓名         成绩
    ---------- ---------- -----------
    001        小红         99
    888        空          0(2 行受影响)
      

  6.   

    没仔细看,要RIGHT JOIN ,
      

  7.   

    select
     c.学号,b.姓名,isnull(a.成绩,0) 成绩
    from
     # a
    join #b b on
     a.学号=b.学号
    right join
     #c c on a.学号=c.学号
    where
     c.标志='是'