求sql语句,子查询,多个值

UPDATE INVMB
SET MB100 = 'Y', MB046 IN
(SELECT AVG(TD010)
FROM PURTD
GROUP BY TD004)
FROM INVMB JOIN
PURTD ON INVMB.MB001 = PURTD.TD004
WHERE MB001 > '83-31'

这段应该怎么写,谢谢!
两个表A和B,分别有字段a和b,c和d;现要根据表A当中的字段a,从表B中查询出c=a的所有记录,并且求出d的平均值,并将平均值赋给b.
谢谢!

第1个回答  2008-05-21
UPDATE INVMB
SET MB100 = 'Y', MB046 =
(SELECT AVG(TD010)
FROM PURTD
WHERE TD004 = INVMB.MB001)
FROM INVMB JOIN
PURTD ON INVMB.MB001 = PURTD.TD004
WHERE MB001 > '83-31'

首先你要确认UPDATE里面的SET必须是一个值,不能是多个,所以只能用等号,另外要确保子查询返回值必须是一个,在子查询的WHERE条件里面进行约束而且记得子查询里面不能用GROUP吧
第2个回答  2020-04-06
select
avg(td010)
from
purtd
group
by
td004
查询的结果多于一个值
invmb.mb001
=
purtd.td004
where
mb001
>
'83-31'
上面用了=号,查出来肯定是一个值,不能对查询出的多值进行赋值
第3个回答  2008-05-21
不明白你需求 列下表数据和关系 并写下要什么样的结果
相似回答
大家正在搜