update A = 多行数据 where B = 多行数据

慎言独行 2015-10-10 12:10:50
我运行的时候出现 ,子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
我知道前面数据可以多行, where不能多行,那我应该怎么改错?
...全文
332 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
The_july 2015-10-12
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/391840907
求大神去解答啊!!!
迷糊丶 2015-10-12
  • 打赏
  • 举报
回复
没表和数据不好分析
双鱼星星 2015-10-11
  • 打赏
  • 举报
回复
给个表结构啊
慎言独行 2015-10-10
  • 打赏
  • 举报
回复
关键语句: update 车辆信息 set 车架号 = ( select 车架号 from sheet1 where CHECKSUM(车牌号码) in (select CHECKSUM(车牌号码) from 车辆信息) ), 发动机号 = ( select 发动机号 from sheet1 where CHECKSUM(车牌号码) in (select CHECKSUM(车牌号码) from 车辆信息) ), VIN码 = ( select VIN码 from sheet1 where CHECKSUM(车牌号码) in (select CHECKSUM(车牌号码) from 车辆信息) ) where 车牌号码 = ( select 车牌号码 from sheet1 where CHECKSUM(车牌号码) in (select CHECKSUM(车牌号码) from 车辆信息) )
慎言独行 2015-10-10
  • 打赏
  • 举报
回复
引用 2 楼 tcmakebest 的回复:
问题首先你是要怎么更新法, 然后再是怎么改, 因为 A 和 B 都是多行, 那肯定有一个匹配问题, 哪一个A 对哪一个B呢.
这是我的语句: IF NOT EXISTS(( select 车牌号码,车架号,发动机号,VIN码 from sheet1 where CHECKSUM(车牌号码) in (select CHECKSUM(车牌号码) from 车辆信息))) BEGIN insert into 车辆信息(车牌号码,车架号,发动机号,VIN码) (select 车牌号码,车架号,发动机号,VIN码 from sheet1 where CHECKSUM(车牌号码) in (select CHECKSUM(车牌号码) from 车辆信息)) END ELSE BEGIN update 车辆信息 set 车架号 = ( select 车架号 from sheet1 where CHECKSUM(车牌号码) in (select CHECKSUM(车牌号码) from 车辆信息) ), 发动机号 = ( select 发动机号 from sheet1 where CHECKSUM(车牌号码) in (select CHECKSUM(车牌号码) from 车辆信息) ), VIN码 = ( select VIN码 from sheet1 where CHECKSUM(车牌号码) in (select CHECKSUM(车牌号码) from 车辆信息) ) where 车牌号码 = ( select 车牌号码 from sheet1 where CHECKSUM(车牌号码) in (select CHECKSUM(车牌号码) from 车辆信息) ) END
吉普赛的歌 版主 2015-10-10
  • 打赏
  • 举报
回复
把A,B的表结构弄出来, 然后加上你的示例。 空口说白话, 有啥用?
慎言独行 2015-10-10
  • 打赏
  • 举报
回复
引用 2 楼 tcmakebest 的回复:
问题首先你是要怎么更新法, 然后再是怎么改, 因为 A 和 B 都是多行, 那肯定有一个匹配问题, 哪一个A 对哪一个B呢.
就是我先用select语句查询出一个结果, 然后想把结果的每一行都update到一个表中的对应行
tcmakebest 2015-10-10
  • 打赏
  • 举报
回复
问题首先你是要怎么更新法, 然后再是怎么改, 因为 A 和 B 都是多行, 那肯定有一个匹配问题, 哪一个A 对哪一个B呢.
慎言独行 2015-10-10
  • 打赏
  • 举报
回复
大神们帮帮我吧
BOKYYY 2015-10-10
  • 打赏
  • 举报
回复
where a in any (select * from B)
Neo_whl 2015-10-10
  • 打赏
  • 举报
回复
把你测试语句贴出来才行
yooq_csdn 2015-10-10
  • 打赏
  • 举报
回复
引用 楼主 u011123587 的回复:
我运行的时候出现 ,子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。 我知道前面数据可以多行, where不能多行,那我应该怎么改错?
where b=多行 可以改成 where b in (select XXXXXX) 可是 update XXX set A= 多行 肯定是不行的。必须唯一,否则更新成哪个值啊
chifan1100 2015-10-10
  • 打赏
  • 举报
回复
如果多行的话,你可以 max 或 min 一下,更新为最大值或最小值 。 PS,要和业务确认好。

34,590

社区成员

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

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