求UPDATE语句,现在单行子查询返回多个行
已建有两张表A,BA姓名年度张三2009张三2010李四2009王五2009王五2010王五2011得出B的对应年限B姓名对应年限张三2李四1王五3updateBset对...
已建有两张表A,B
A
姓名 年度
张三 2009
张三 2010
李四 2009
王五 2009
王五 2010
王五 2011
得出B的对应年限
B
姓名 对应年限
张三 2
李四 1
王五 3
update B set 对应年限=(select (SELECT COUNT(*)
FROM A GROUP BY A. 姓名) from A where a.姓名=b.姓名) 展开
A
姓名 年度
张三 2009
张三 2010
李四 2009
王五 2009
王五 2010
王五 2011
得出B的对应年限
B
姓名 对应年限
张三 2
李四 1
王五 3
update B set 对应年限=(select (SELECT COUNT(*)
FROM A GROUP BY A. 姓名) from A where a.姓名=b.姓名) 展开
展开全部
update b
set b."对应年限" =
(
select c."更新年限"
from
(
select count(1) as "更新年限",a."姓名"
from a
group by a."姓名"
) c
where c."姓名" = b."姓名"
)
where b."姓名" in
(
select c."姓名"
from
(
select count(1) as "更新年限",a."姓名"
from a
group by a."姓名"
) c
)
记得commit
set b."对应年限" =
(
select c."更新年限"
from
(
select count(1) as "更新年限",a."姓名"
from a
group by a."姓名"
) c
where c."姓名" = b."姓名"
)
where b."姓名" in
(
select c."姓名"
from
(
select count(1) as "更新年限",a."姓名"
from a
group by a."姓名"
) c
)
记得commit
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在执行UPDATE 语句的时候,如果关联表更新的时候,下面几条语句
1--只能在DB2,ORACLE下执行,SQL SERVER 报"a"语法错
UPDATE MAM_SUBJECTITEM a SET a.ICON_FILE= (SELECT c.FIELD_1 FROM MCM_NAVIGATION c WHERE a.OBJ_ID=c.ID)
2--1中去除缩写名,DB2,ORACLE和 SQL SERVER 都能执行
UPDATE MAM_SUBJECTITEM SET ICON_FILE= (SELECT FIELD_1 FROM MCM_NAVIGATION WHERE OBJ_ID=ID)
3--只能在SQL SERVER 中执行,DB2,ORACLE不能执行,报"from"语法错,
UPDATE MAM_SUBJECTITEM SET ICON_FILE=c.FIELD_1
FROM MCM_NAVIGATION AS c
WHERE MAM_SUBJECTITEM.OBJ_ID=c.ID
----------------
你的问题,如果在 SQL SERVER 下可以:
update B set 对应年限=C.num
from (select count(1) as num,姓名 from A group by A.姓名) as C
where c. 姓名=B.姓名
1--只能在DB2,ORACLE下执行,SQL SERVER 报"a"语法错
UPDATE MAM_SUBJECTITEM a SET a.ICON_FILE= (SELECT c.FIELD_1 FROM MCM_NAVIGATION c WHERE a.OBJ_ID=c.ID)
2--1中去除缩写名,DB2,ORACLE和 SQL SERVER 都能执行
UPDATE MAM_SUBJECTITEM SET ICON_FILE= (SELECT FIELD_1 FROM MCM_NAVIGATION WHERE OBJ_ID=ID)
3--只能在SQL SERVER 中执行,DB2,ORACLE不能执行,报"from"语法错,
UPDATE MAM_SUBJECTITEM SET ICON_FILE=c.FIELD_1
FROM MCM_NAVIGATION AS c
WHERE MAM_SUBJECTITEM.OBJ_ID=c.ID
----------------
你的问题,如果在 SQL SERVER 下可以:
update B set 对应年限=C.num
from (select count(1) as num,姓名 from A group by A.姓名) as C
where c. 姓名=B.姓名
追问
谢谢!那么请问在oracle下能实现么?
追答
oracle 可以按第一种方法写:
update B set 对应年限=(select count(1) from A where A.姓名=B.姓名 group by A.姓名)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询