subquery返回多行错误

gopyfrb3  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(489)

我目前正在做一些sql魔术,想更新我的公司erp计划的股票。但是,如果我尝试运行以下查询,就会得到标题中提到的错误。

update llx_product lp
set stock = (select sum(ps.reel)
             from llx_product_stock as ps, llx_entrepot as w 
             where w.entity IN (1) 
               and w.rowid = ps.fk_entrepot 
               and ps.fk_product = lp.rowid
             group by ps.rowid)

如果与产品的rowid一起使用,子查询本身只返回一行。

select sum(ps.reel)
from llx_product_stock as ps, llx_entrepot as w
where w.entity in (1) 
  and w.rowid = ps.fk_entrepot 
  and ps.fk_product = 7372
group by ps.rowid

任何帮助都将不胜感激

whhtz7ly

whhtz7ly1#

我建议将问题写为:

update llx_product lp
    set stock = (select sum(ps.reel)
                 from llx_product_stock ps join
                      llx_entrepot w 
                      on ps.fk_product = lp.rowid
                 where w.entity in (1) and
                       w.rowid = ps.fk_entrepot
                );

没有 group by 不能返回多行。不清楚您的版本是如何返回多行的,因为 group by 也有一个平等的比较。也许有一些类型转换的问题在起作用。
但无论如何,没有 group by ,无法获取当前获取的错误。

wztqucjr

wztqucjr2#

对于任何想知道我的问题的解决方案是一个非常简单的问题的人来说,戈登指出了正确的方向,我使它比它应该的更难。

update llx_product lp
left join llx_product_stock ps on lp.rowid = ps.fk_product
set lp.stock = ps.reel

相关问题