sql 问题子查询返回的值不止一个。

子查询返回的值不止一个。当子查询跟随在=、!=、<、<=、>、>=之后,或子查询用作表达式时,这种情况是不允许的。sql语句是这样的:updateaasetidcard=... 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。sql语句是这样的:
update aa set idcard = (select bb.idcard from bb
where exists (select * from aa where aa.name=bb.name ))
怎么改呢?就是想把bb表中的idcard放进aa表中。但是前提是aa表,bb表中有相同的名字。
展开
 我来答
四舍五不入6
高粉答主

2020-03-07 · 还没有填写任何签名哦
四舍五不入6
采纳数:27 获赞数:71368

向TA提问 私信TA
展开全部

解决方法如下:

返回一个值:返回多个说明数据库中满足用户查询条件的记录有多个,要返回一个就说明用户的查询条件不够,再加条件控制就行了,比如在语句末尾再加 and ***=‘***’;

如果用户问的是如何在后台程序中接收的话,用List可以,一个节点接收Result的一行值,读取的时候遍历List就行了。

扩展资料:

删除表

drop table tabname--这是将表连同表中信息一起删除但是日志文件中会有记录

删除信息

delete from table_name-这是将表中信息删除但是会保留这个表

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1[separator]

参考资料来源:百度百科-sql语句

参考资料来源:百度百科-SQL语句大全

game4mylife
2014-09-17 · TA获得超过528个赞
知道小有建树答主
回答量:365
采纳率:62%
帮助的人:204万
展开全部
这种语句在一种情况下可以执行,当子查询只能查出一条数据时。

如果查出多条,肯定会报错。【xxxxx子查询返回了多条数据】(报错信息大概就这个样子)

试想, aa表 name = '1'
bb表中存在2条数据:
一条 name = '1' idcard = '111'
另一条 name = '1' idcard ='222'
那数据库如何判断,是吧aa中name='1'的这条数据 update 成 111 还是222呢?

所以这种语句在逻辑上是存在缺陷的,除非你能保证子查询能查出1条数据。

祝进步,望采纳!
更多追问追答
追问
额。那这样就是没有办法实现了?
追答
不是实现不实现的问题。
只要逻辑正确,实现方式肯定是有的

现在一张aa表中的数据 对应 n个 bb表中的
你取那个值呢?第一个?还是怎么的?
如果是第一个那么

update aa set idcard = (select bb.idcard from bb
where exists (select to(1)idcard from aa where aa.name=bb.name )

top是sqlServer语法,oracle是rownum
数据库不同语法不同
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
apologythen
2014-09-17
知道答主
回答量:28
采纳率:0%
帮助的人:13万
展开全部
update aa set idcard = (select bb.idcard from bb
where exists (select * from aa where aa.name=bb.name ) and rownum= 1);

这样可以么?
追问
不行啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-09-17
展开全部
不行 update语句 set只能赋一个值 子查询是查询出的不只一个值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式