VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 694|回复: 7

这样存储过程该怎么实现?

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-18 22:30:01 | 显示全部楼层 |阅读模式
现在有数据表A和B:

A表                             B表
---------------------------     --------------------------
uid      name                    topic      uid
1       David                    xxxxx       1
2       Jack                      xxx        3
3       Mike                     xxxxxx      0

经过存储过程处理后,得到这样一个表C:
C表
-------------------------
topic        name
xxxxx        David
xxx          Mike
xxxxxx       匿名

请问,这样的一个存储过程该怎么写?
回复

使用道具 举报

0

主题

41

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-4-23 19:15:01 | 显示全部楼层
select b.topic, (case a.name when null then 'a.name' else a.name end ) as NAME

FROM B表 b
LEFT JOIN
A表 a
on a.uid = b.uid
回复

使用道具 举报

0

主题

41

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-4-23 20:45:01 | 显示全部楼层
SQL :
select b.topic, (case a.name when null then '匿名' else a.name end ) as NAME
FROM B表 b
LEFT JOIN
A表 a
on a.uid = b.uid


回复

使用道具 举报

0

主题

41

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-4-23 22:45:01 | 显示全部楼层
存储过程:

CREATE PROCEDURE  Getname
AS

begin
select b.topic, (case a.name when null then '匿名' else a.name end ) as NAME
FROM B表 b
LEFT JOIN
A表 a
on a.uid = b.uid
end
GO
回复

使用道具 举报

3

主题

29

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-4-23 23:45:01 | 显示全部楼层
呵呵,楼上一个语句就完成了,还用存储过程?
不过问一句,左外连接LEFT outer JOIN 的outer可以省略吗?从来没敢省过。
回复

使用道具 举报

0

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-4-24 00:00:01 | 显示全部楼层
select b.topic, ISNULL(a.name, '匿名') from B表 b LEFT JOIN A表 a ON a.uid = b.uid
回复

使用道具 举报

0

主题

13

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-4-24 16:30:02 | 显示全部楼层
create procedure P_test
as
begin
    select topic,uname = case when (select [NAME] from  表A where 表A.uid=表B.uid)  is null then '匿名' else (select [NAME] from  表A where 表A.uid=表B.uid) end  from 表B

end

回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-4-25 12:15:01 | 显示全部楼层
谢谢楼上各位,zhouyin1981(波波)的语句可行。lisongfox 的语句“匿名”两个字不能写到新的字段里,新字段仍旧显示null。
不过还是要谢谢大家的帮助。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表