DECLARE @t table (姓名 varchar ( 10 )) insert into @T values ( ' 张三 ' ) insert into @T values ( ' 李四 ' ) insert into @T values ( ' 王二 ' ) insert into @T values ( NULL ) DECLARE @T2 table (姓名 varchar ( 10 ) , 课程 varchar ( 10 ) , 分数 int ) insert into @T2 values ( ' 张三 ' , ' 语文 ' , 74 ) insert into @T2 values ( ' 张三 ' , ' 数学 ' , 83 ) insert into @T2 values ( ' 张三 ' , ' 物理 ' , 93 ) insert into @T2 values ( ' 李四 ' , ' 物理 ' , 91 ) insert into @T2 values ( NULL , ' 数学 ' , 50 ) select * from @T a cross apply ( select 课程,分数 from @t2 where 姓名 = a.姓名) b /* 姓名 课程 分数---------- ---------- -----------张三 语文 74张三 数学 83张三 物理 93李四 物理 91(4 行受影响) */ select * from @T a outer apply ( select 课程,分数 from @t2 where 姓名 = a.姓名) b /* 姓名 课程 分数---------- ---------- -----------张三 语文 74张三 数学 83张三 物理 93李四 物理 91王二 NULL NULLNULL NULL NULL(6 行受影响) */