学生表 
学号,姓名
001,小明
002,小红
003,小王
成绩表
学号1,学号2
001,002
003,null
null,001
我现在需要的结果是
姓名1,姓名2
小明,小红
小王,null
null,小明

解决方案 »

  1.   

    select b1.姓名 as 姓名1,b2.姓名 as 姓名2
    from 成绩表 a left join 学生表 b1 on a.学号1 = b1.学号
    left join 学生表 b2 on a.学号2 = b2.学号
      

  2.   

    select S1.姓名 as 姓名1,S2.姓名 as 姓名2
    from 成绩表 C 
    left join 学生表 S1 on C.学号1 = S1.学号
    left join 学生表 S2 on C.学号2 = S2.学号
      

  3.   

    create table #学生表(学号 varchar(5),姓名 varchar(5))
    insert #学生表 select '001','小明'
    insert #学生表 select '002','小红'
    insert #学生表 select '003','小王'create table #成绩表(学号1 varchar(5),学号2 varchar(5))
    insert #成绩表 select '001','002'
    insert #成绩表 select '003',null
    insert #成绩表 select null,'001'
    select b.姓名 as 姓名1 ,c.姓名 as 姓名2 
    from #成绩表 a left join #学生表 b on a.学号1=b.学号
    left join #学生表 c on a.学号2=c.学号姓名1   姓名2
    ----- -----
    小明    小红
    小王    NULL
    NULL  小明(3 行受影响)
      

  4.   

    --> 测试数据:[学生表]
    if object_id('[学生表]') is not null drop table [学生表]
    create table [学生表]([学号] varchar(3),[姓名] varchar(4))
    insert [学生表]
    select '001','小明' union all
    select '002','小红' union all
    select '003','小王'select * from [学生表]
    --> 测试数据:[成绩表]
    if object_id('[成绩表]') is not null drop table [成绩表]
    create table [成绩表]([学号1] varchar(3),[学号2] varchar(3))
    insert [成绩表]
    select '001','002' union all
    select '003',null union all
    select null,'001'
    select b1.姓名 as 姓名1,b2.姓名 as 姓名2
    from 成绩表 a 
    left join 学生表 b1 on a.学号1 = b1.学号
    left join 学生表 b2 on a.学号2 = b2.学号
    /*
    姓名1  姓名2
    ---- ----
    小明   小红
    小王   NULL
    NULL 小明(3 行受影响)
    */
      

  5.   

    select 
    (select 姓名 from 学生表 n where n.学号1 = m.学号) 姓名1,
    (select 姓名 from 学生表 n where n.学号1 = m.学号) 姓名2
    from 成绩表 m 
      

  6.   


    成绩表join两次学生表.....
      

  7.   

    create table [学生表]([学号] varchar(3),[姓名] varchar(4))
    insert [学生表]
    select '001','小明' union all
    select '002','小红' union all
    select '003','小王'create table [成绩表]([学号1] varchar(3),[学号2] varchar(3))
    insert [成绩表]
    select '001','002' union all
    select '003',null union all
    select null,'001'select n1.姓名 姓名1,
           n2.姓名 姓名2
    from 成绩表 m
    left join 学生表 n1 on m.学号1 = n1.学号
    left join 学生表 n2 on m.学号2 = n2.学号drop table 学生表 ,成绩表/*
    姓名1  姓名2  
    ---- ---- 
    小明   小红
    小王   NULL
    NULL 小明(所影响的行数为 3 行)
    */
      

  8.   


    create table 学生表 
    (学号 varchar(20),
    姓名 varchar(20)
    )
    insert into 学生表
    select '001','小明' union all
    select '002','小红'union all
    select '003','小王'create table 成绩表 
    (学号1 varchar(20),
    学号2 varchar(20)
    )
    insert into 成绩表
    select '001','002'  union all
    select '003',null union all
    select null,'001'select 
    (select 姓名 from 学生表 where 学号=A.学号1) as x1,
    (select 姓名 from 学生表 where 学号=A.学号2) as x2
    from 成绩表 A