SQL2008 消息 512,级别 16,状态 1,第 7 行 子查询返回的值不止一个

SQL2008消息512,级别16,状态1,第7行子查询返回的值不止一个。当子查询跟随在=、!=、<、<=、>、>=之后,或子查询用作表达式时,这种情况是不允许的。下面是... SQL2008 消息 512,级别 16,状态 1,第 7 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
下面是我写的代码,大概的意思就是:求两个点StarWhere ,EndWhere之间的距离d,并把距离放入表 ‘路线’ 中,下面我写的代码想表达的意思就是:
d=((X1-X2)^2+(Y1-Y2)^2)^1/2
但是出现了前面的错误,请求修改
UPDATE 路线
SET Lenth=
POWER(
POWER((select 路口.X
FROM 路口,路线
WHERE 路口.LoadID=路线.StarWhereID)-
(select 路口.X
FROM 路口,路线
WHERE 路口.LoadID=路线.EndWhereID)
,2)+
POWER((select 路口.Y
FROM 路口,路线
WHERE 路口.LoadID=路线.StarWhereID)-
(select 路口.Y
FROM 路口,路线
WHERE 路口.LoadID=路线.EndWhereID)
,2)
,1/2)
from 路口,路线
where 路口.BelongWhere='A';
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
jelvis
2014-09-03 · TA获得超过5631个赞
知道大有可为答主
回答量:2480
采纳率:62%
帮助的人:830万
展开全部
你把2个POWER里的4个select单独拿出来查询一下,肯定是有出现不止一条记录的,所以出现提示的错误
追问
所以我想问下怎么修改
追答
你的记录应该是这种:
X1 X2 Y1 Y2
1 2 3 4
5 6 7 8
.....
你要对每条记录做uodate length,所以你最好用游标,将X1 X2 Y1 Y2都select出来放到游标里,一条一条的更新。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式