所以我试图用我从其他表中得到的值来更新我的Vorschlagspakete表。确切地说,我想将3个值写入主表中。ATM机看起来是这样的:
update vorschlagspakete
set (paketid, verkaufsstelleid) = (
select k.paketid, k.verkaufsstelleid
from Konfiguration k, bewertung b
where k.konfigurationsid = b.konfigurationsid
group by k.paketid, k.verkaufsstelleid
having avg(b.sterne) >= 5);但每次我试一次,结果都是-01427。
发布于 2019-06-05 20:05:14
您得到的错误ORA-01427意味着太多行(由子查询返回)。例如,基于Scott的模式(因为我没有您的表),如下所示:
SQL> update emp e set
2 (e.ename, e.job) = (select d.dname, d.loc from dept d);
(e.ename, e.job) = (select d.dname, d.loc from dept d)
*
ERROR at line 2:
ORA-01427: single-row subquery returns more than one row为什么不起作用?因为子查询返回的不仅仅是一行!
SQL> select d.dname, d.loc from dept d;
DNAME LOC
-------------- -------------
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON
SQL>那么,如何将所有这些值放入EMP表的一行中呢?显然,这是行不通的,所以您必须做一些事情来限制行数。多么?那得看情况了。
DISTINCT会有所帮助。
从部门d中选择distinct d.dname,d.locWHERE条件会有所帮助。
从部门d选择d.dname,d.loc,其中d.location = 'NEW‘你应该怎么做?我不知道,我们没有你的数据。看看上面写的东西是否有帮助。
https://stackoverflow.com/questions/56466385
复制相似问题