tb1
Name
张三
李四
王五tb2
Name Score Week
张三 100 1
张三 80 2
李四 100 2如何获得查询结果
Name Score Week
张三 100 1
张三 80 2
李四 NULL 1
李四 100 2
王五 NULL 1
王五 NULL 2

解决方案 »

  1.   

    select b.name,c.Score,b.Week
    from 
    (
    select *
    from tb1,
    (select distinct week from tb2) a
    ) b
    left join 
    tb2
    on b.name=c.name
      

  2.   

    select b.name,c.Score,b.Week
    from 
    (
    select *
    from tb1,
    (select distinct week from tb2) a
    ) b
    left join 
    tb2 c
    on b.name=c.name
      

  3.   

    --> 测试数据:#tb1
    if object_id('tempdb.dbo.#tb1') is not null drop table #tb1
    create table #tb1([Name] varchar(4))
    insert #tb1
    select '张三' union all
    select '李四' union all
    select '王五'
    --> 测试数据:#tb2
    if object_id('tempdb.dbo.#tb2') is not null drop table #tb2
    create table #tb2([Name] varchar(4),[Score] int,[Week] int)
    insert #tb2
    select '张三',100,1 union all
    select '张三',80,2 union all
    select '李四',100,2SELECT A.NAME,B.Score,A.WEEK FROM #TB2 B RIGHT JOIN 
    (
    select * from #tb1 ,(SELECT DISTINCT Week FROM #TB2) T) A ON B.NAME=A.NAME AND B.Week=A.Week/*
    (所影响的行数为 3 行)
    (所影响的行数为 3 行)NAME Score       WEEK        
    ---- ----------- ----------- 
    张三   100         1
    李四   NULL        1
    王五   NULL        1
    张三   80          2
    李四   100         2
    王五   NULL        2(所影响的行数为 6 行)
      

  4.   

    select
      a.name,b.Score,a.week from b 
    right join
     (select * from a ,(select  distinct week from b)t)a 
    on
     b.name=a.name
    and
      b.Week=a.Week