[英]Performance improvement in JPQL Query for update same table
我想使用jpql更新表格。 表结构和条件以及查询如下。
-------------------------------------------------------------
ASSIGNMENT | BUSINESS_AREA | DC_CURRENCY | DC_AMOUNT | STATUS
-------------------------------------------------------------
在上面的表结构中,我想将所有行的状态更新为已完成,其中DC_AMOUNT的总和为零,DC_CURRENCY的所有行均相同,并且ASSIGNMENT也相同
我的方法
查询以获得所有分配编号满足条件
SELECT
q.assignment
FROM
OnAccoutEntity q, OnAccoutEntity r
WHERE
q.assignment = r.assignmet
AND q.dcCurrency = r.dcCurrency
AND q.businessArea = r.businessArea
GROUP BY
q.assignmnt
HAVING
SUM(q.dcAmount) = 0
UPDATE OnAccoutEntity p
SET p.status = 'COMPETED'
WHERE p.assignment IN ("Result of previous query' )
如果我使用单个查询来更新它给出异常。
java.sql.SQLException:您不能在form子句中指定目标“ ONACCCOUNT”进行更新。
请提出一个更好的方法,因为这很耗时。
它应该与EXISTS一起使用,
UPDATE
OnAccoutEntity o
SET
o.status = 'COMPLETED'
WHERE
EXISTS (SELECT
q.assignment
FROM
OnAccoutEntity q
WHERE
o.assignment = q.assignment
AND
q.dcCurrency = o.dcCurrency
AND
q.businessArea = r.businessArea
GROUP BY
q.assignment
HAVING SUM(q.dcAmount) = 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.