我试图运行更新查询。
表PS_Z_TREND_NOW_TBL包含DESCR254和URLS列。
我正在使用PSPRSMDEFN,它有很多列,包括PORTAL_LABEL和URLS。我想运行下面的更新查询来更新PS_Z_TREND_NOW_TBL.URLS列,其中值匹配PS_Z_TREND_NOW_TBL.DESCR254和PSPRSMDEFN.URLS。我需要在下面的查询中进行更改/添加以完成此项工作?当我尝试运行下面的查询它给出了一个错误,指出,“单行子查询返回多行”ORACLE SQL UPDATE问题
UPDATE PS_Z_TREND_NOW_TBL now
SET now.URLS = t.URLS
WHERE now.DESCR254 IN(
select t.PORTAL_URLTEXT from PSPRSMDEFN t, PS_Z_TREND_NOW_TBL trd
where t.VERSION =
(select MIN(t2.VERSION)
from PSPRSMDEFN t2
WHERE t2.PORTAL_LABEL = trd.DESCR254
AND t2.PORTAL_REFTYPE = 'C'
group by t2.PORTAL_LABEL
)
AND t.PORTAL_LABEL = trd.DESCR254
AND t.PORTAL_REFTYPE = 'C'
and t.PORTAL_NAME = 'EMPLOYEE'
)
这从上面返回多行数据查询的一部分。它返回的值与PS_Z_TREND_NOW_TBL.DESCR254中的值相同。我想将这些值与查询中返回的内容进行匹配以更新URLS字段。
select t.PORTAL_URLTEXT from PSPRSMDEFN t, PS_Z_TREND_NOW_TBL trd
where t.VERSION =
(select MIN(t2.VERSION)
from PSPRSMDEFN t2
WHERE t2.PORTAL_LABEL = trd.DESCR254
AND t2.PORTAL_REFTYPE = 'C'
group by t2.PORTAL_LABEL
)
AND t.PORTAL_LABEL = trd.DESCR254
AND t.PORTAL_REFTYPE = 'C'
and t.PORTAL_NAME = 'EMPLOYEE'
这不是问题自我解释吗?在进行更新时,只能将行值设置为单个值,而不是查询返回的多个值。您需要创建逻辑以使底部选择语句返回一行,而不是......您的问题与您的数据有关,代码 – Twelfth 2014-09-26 18:18:59
中的任何内容都没有帮助。那么我将如何更改查询呢? – user3586248 2014-09-26 18:21:56
尝试't.version in'而不是't.version =' – Aramillo 2014-09-26 18:23:25