怎么将多条记录给一个变量?

cy527300280 2008-11-21 10:19:53
例如:
update 成绩表
set 成绩=80
where 学号 = (select top 5 学生表.学号 from 学生表,成绩表,课程表
where 学生表.学号=成绩表.学号 and 成绩表.课程号=课程表.课程号 and 性别='男' and 先修课 is not null )

报错:
服务器: 消息 512,级别 16,状态 1,行 1
子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。

请问上面的多条记录给一个变量时,怎么做?

...全文
219 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cy527300280 2008-11-22
  • 打赏
  • 举报
回复
明白了,谢谢大家
talayayaya 2008-11-22
  • 打赏
  • 举报
回复
declare @xm money

select max(@xm) from (select @xm in (select 目前薪资 from 黄金员工表 where 姓名 like '王%'))a
lansz 2008-11-21
  • 打赏
  • 举报
回复
看联机帮助in的用法去吧
cy527300280 2008-11-21
  • 打赏
  • 举报
回复
现在是这个问题:
declare @xm money
select @xm in(select max(目前薪资) from 黄金员工表 where 姓名 like '王%')
select max(@xm)


用in错误,因为表返回多条记录,请问该怎么做?
qizhengsheng 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wanshichen 的回复:]
把WHERE里学号=换成学号IN

等号只是一个的,IN是范围内的
[/Quote]

9494
wanshichen 2008-11-21
  • 打赏
  • 举报
回复
把WHERE里学号=换成学号IN

等号只是一个的,IN是范围内的
cy527300280 2008-11-21
  • 打赏
  • 举报
回复
那这该怎么做,它返回记录有多条,怎么赋到一个变量里:
declare @xm money
select @xm in(select max(目前薪资) from 黄金员工表 where 姓名 like '王%')
select max(@xm)
ChinaJiaBing 2008-11-21
  • 打赏
  • 举报
回复

update 成绩表
set 成绩=80
where 学号 in (select top 5 学生表.学号 from 学生表,成绩表,课程表
where 学生表.学号=成绩表.学号 and 成绩表.课程号=课程表.课程号 and 性别='男' and 先修课 is not null )
cy527300280 2008-11-21
  • 打赏
  • 举报
回复
那要怎么做?
VIServer 2008-11-21
  • 打赏
  • 举报
回复
in 是指一个范围内的选择
cy527300280 2008-11-21
  • 打赏
  • 举报
回复
如果是这个
declare @xm money
select @xm in(select max(目前薪资) from 黄金员工表 where 姓名 like '王%')
select max(@xm)


改为 in 时怎么报错?
hyde100 2008-11-21
  • 打赏
  • 举报
回复
update 成绩表
set 成绩=80
where 学号 in (select top 5 学生表.学号 from 学生表,成绩表,课程表
and 学生表.学号=成绩表.学号 and 成绩表.课程号=课程表.课程号 and 性别='男' and 先修课 is not null )
super_iven 2008-11-21
  • 打赏
  • 举报
回复
=改为in
fcuandy 2008-11-21
  • 打赏
  • 举报
回复
in
或者内连接。
或者 exists
  • 打赏
  • 举报
回复
=还成in

wzy_love_sly 2008-11-21
  • 打赏
  • 举报
回复
update 成绩表
set 成绩=80
where 学号 in (select top 5 学生表.学号 from 学生表,成绩表,课程表
where 学生表.学号=成绩表.学号 and 成绩表.课程号=课程表.课程号 and 性别='男' and 先修课 is not null )
swwei2002 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 cy527300280 的回复:]
现在是这个问题:

SQL codedeclare @xm money
select @xm in(select max(目前薪资) from 黄金员工表 where 姓名 like '王%')
select max(@xm)



用in错误,因为表返回多条记录,请问该怎么做?
[/Quote]

多个值赋值是select @x=','+@x from ......where....
另外select max(目前薪资) from 黄金员工表 where 姓名 like '王%'返回的已经是一个最大值了

34,838

社区成员

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

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