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
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
from
(
select *
from tb1,
(select distinct week from tb2) a
) b
left join
tb2
on b.name=c.name
from
(
select *
from tb1,
(select distinct week from tb2) a
) b
left join
tb2 c
on b.name=c.name
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 行)
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