这里的case该如何用

sugarsupper 2006-12-03 03:16:36
userroles:
userid roleid usertype
1 1 1
select UserName=(case UserType when 1 then (select UserName from A g where g.UserID=UserID ) end)
from userroles
我想从userroles选出由不同UserType对应的表中的用户名,如上,当usertype=1时,从A表选出与当前userid对应的username,
问题是select UserName from A g where g.UserID=UserID,这里的右边的userid并不是对应的每一列的userid,似乎是全部都检索了,出现了以下错误:
“子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。”
...全文
240 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
laoliu666 2006-12-03
  • 打赏
  • 举报
回复
楼上语句是否经过测试?
marco08 2006-12-03
  • 打赏
  • 举报
回复

select g.UserName from A g
inner join userroles on g.UserID=userroles.UserID
where userroles.UserType=1
bugchen888 2006-12-03
  • 打赏
  • 举报
回复
SELECT u.username
FROM userroles r LEFT OUTER JOIN A u
ON r.userid=u.userid
AND r.usertype=1
hhhdyj 2006-12-03
  • 打赏
  • 举报
回复
不用case
SELECT UN.username
FROM userroles UR, A UN
WHERE UR.UserID = UN.UserID AND UR.usertype = 1
hellowork 2006-12-03
  • 打赏
  • 举报
回复
在子查询中加入TOP1:
select UserName=(case UserType when 1 then (select TOP 1 UserName from A g where g.UserID=UserID ) end)
from userroles
中国风 2006-12-03
  • 打赏
  • 举报
回复
楼主把数据贴出来
zsl5305256 2006-12-03
  • 打赏
  • 举报
回复
SELECT u.username
FROM userroles a,A b
where a.userid*=b.userid
AND a.usertype=1


27,581

社区成员

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

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