如何实现两个表的"全"关联查询???

Davily 2004-08-31 09:05:23
如:
表一:
姓名,语文
张三 A
李四 B

表二:
姓名,数学
张三 B
王五 C

能不能用一个简单的关联实现如下结果:
姓名,语文,数学
张三 A B
李四 B [null]
王五 [null] C

望各路大侠帮帮俺,先谢了
...全文
176 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2004-08-31
  • 打赏
  • 举报
回复
--测试

--测试数据
create table 表一(姓名 varchar(10),语文 varchar(10))
insert 表一 select '张三','A'
union all select '李四','B'

create table 表二(姓名 varchar(10),数学 varchar(10))
insert 表二 select '张三','B'
union all select '王五','C'
go

--查询
select 姓名=isnull(a.姓名,b.姓名),a.语文,b.数学
from 表一 a full join 表二 b on a.姓名=b.姓名

--另类一点的方法
select 姓名,语文=max(语文),数学=max(数学)
from(
select 姓名,语文,数学=null from 表一
union all
select 姓名,null,数学 from 表二
)a group by 姓名
go

--删除测试
drop table 表一,表二

/*--测试结果

姓名 语文 数学
---------- ---------- ----------
张三 A B
王五 NULL C
李四 B NULL

(所影响的行数为 3 行)


姓名 语文 数学
---------- ---------- ----------
李四 B NULL
王五 NULL C
张三 A B

(所影响的行数为 3 行)
--*/
zjcxc 2004-08-31
  • 打赏
  • 举报
回复
--另类一点的方法
select 姓名,语文=max(语文),数学=max(数学)
from(
select 姓名,语文,数学=null from 表一
union all
select 姓名,null,数学 from 表二
)a group by 姓名
WangZWang 2004-08-31
  • 打赏
  • 举报
回复
select 姓名,语文,NULL as 数学
from 表一
union
select 姓名,NULL 语文,数学
from 表二
Andy__Huang 2004-08-31
  • 打赏
  • 举报
回复
select a.姓名,a.语文,b.数学 from 表一 a left join 表二 b on a.姓名=b.姓名
zjcxc 2004-08-31
  • 打赏
  • 举报
回复
select 姓名=isnull(a.姓名,b.姓名),a.语文,b.数学
from 表一 a full join 表二 b on a.姓名=b.姓名

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧