查询一对多遇到空值,该怎么写select语句

v5v5 2018-05-11 04:09:25
表A
编号 姓名
1 王
2 张
3 刘

表B
任务 人员编号
a 1
b 2
c 2
d (空值)

表A.编号 与 表B.人员编号 为一对多关系
欲得查询结果如下:

任务 姓名
a 王
b 张
c 张
d (空值)

请问该怎么写select语句
...全文
286 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
v5v5 2018-05-11
  • 打赏
  • 举报
回复
引用 3 楼 sinat_28984567 的回复:
[quote=引用 2 楼 fanyihao 的回复:] [quote=引用 1 楼 sinat_28984567 的回复:]
--测试数据
if not object_id(N'Tempdb..#A') is null
	drop table #A
Go
Create table #A([编号] int,[姓名] nvarchar(21))
Insert #A
select 1,N'王' union all
select 2,N'张' union all
select 3,N'刘'
GO
if not object_id(N'Tempdb..#B') is null
	drop table #B
Go
Create table #B([任务] nvarchar(21),[人员编号] int)
Insert #B
select N'a',1 union all
select N'b',2 union all
select N'c',2 union all
select N'd',NULL
Go
--测试数据结束
SELECT 任务,
       姓名
FROM #B
    LEFT JOIN #A
        ON 编号 = 人员编号;
谢谢,还有如果到ms access里该怎么写[/quote] 这样写报错吗?不太了解acces但是left join应该都支持吧……测试数据不用管,直接用select语句[/quote] 好的成功了谢谢
二月十六 版主 2018-05-11
  • 打赏
  • 举报
回复
引用 2 楼 fanyihao 的回复:
[quote=引用 1 楼 sinat_28984567 的回复:]
--测试数据
if not object_id(N'Tempdb..#A') is null
	drop table #A
Go
Create table #A([编号] int,[姓名] nvarchar(21))
Insert #A
select 1,N'王' union all
select 2,N'张' union all
select 3,N'刘'
GO
if not object_id(N'Tempdb..#B') is null
	drop table #B
Go
Create table #B([任务] nvarchar(21),[人员编号] int)
Insert #B
select N'a',1 union all
select N'b',2 union all
select N'c',2 union all
select N'd',NULL
Go
--测试数据结束
SELECT 任务,
       姓名
FROM #B
    LEFT JOIN #A
        ON 编号 = 人员编号;
谢谢,还有如果到ms access里该怎么写[/quote] 这样写报错吗?不太了解acces但是left join应该都支持吧……测试数据不用管,直接用select语句
v5v5 2018-05-11
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
--测试数据
if not object_id(N'Tempdb..#A') is null
	drop table #A
Go
Create table #A([编号] int,[姓名] nvarchar(21))
Insert #A
select 1,N'王' union all
select 2,N'张' union all
select 3,N'刘'
GO
if not object_id(N'Tempdb..#B') is null
	drop table #B
Go
Create table #B([任务] nvarchar(21),[人员编号] int)
Insert #B
select N'a',1 union all
select N'b',2 union all
select N'c',2 union all
select N'd',NULL
Go
--测试数据结束
SELECT 任务,
       姓名
FROM #B
    LEFT JOIN #A
        ON 编号 = 人员编号;
谢谢,还有如果到ms access里该怎么写
二月十六 版主 2018-05-11
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([编号] int,[姓名] nvarchar(21))
Insert #A
select 1,N'王' union all
select 2,N'张' union all
select 3,N'刘'
GO
if not object_id(N'Tempdb..#B') is null
drop table #B
Go
Create table #B([任务] nvarchar(21),[人员编号] int)
Insert #B
select N'a',1 union all
select N'b',2 union all
select N'c',2 union all
select N'd',NULL
Go
--测试数据结束
SELECT 任务,
姓名
FROM #B
LEFT JOIN #A
ON 编号 = 人员编号;


34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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