gpt4 book ai didi

java - 单行子查询返回多行

转载 作者:行者123 更新时间:2023-12-02 10:48:51 25 4
gpt4 key购买 nike

我编写了一个更新记录的SQL查询,在大多数情况下它运行良好,但从昨天开始它无法更新行。我目前正在开发基于Spring MVC的Web应用程序,其中我需要执行DML操作通过调用update()方法。

我正在使用 JDBC 模板,并在我的更新方法中编写了此查询。它获取 2018 年 1 月的 947 条记录,我已经检查过所有记录都是唯一的。

我被困在这里,我无法找到重复的记录。我以为这个异常是由于多个记录而发生的,但我认为我错了,有一些我无法识别的东西。

这是查询:

    UPDATE SALARY_DETAIL_REPORT_012018 sd         
SET sd.EMP_ID =
(SELECT e.emp_id from EMPLOYEE e
WHERE e.VERIFY_STATUS = 1
AND e.RELIEF_TYPE IS NULL
AND e.emp_code = to_char(sd.emp_code)
AND e.EMP_TYPE_ID!=03)
WHERE EXISTS
(SELECT e.emp_id from EMPLOYEE e
WHERE e.VERIFY_STATUS = 1
AND e.emp_code = to_char(sd.emp_code)
AND e.EMP_TYPE_ID!=03 AND e.RELIEF_TYPE IS NULL)
AND sd.EMP_ID IS NULL
AND sd.REFERENCE_ID LIKE '203-%'

这是我的 DAOImpl 类中的 Java 代码

 public void update(String tableSuffix, String regionId, String circleId) {
String tabName = "SALARY_DETAIL_REPORT_" + tableSuffix;
String q = "UPDATE " + tabName + " sd"
+ " SET sd.EMP_ID = (SELECT e.emp_id "
+ " from EMPLOYEE e WHERE e.VERIFY_STATUS = 1 AND e.RELIEF_TYPE IS NULL "
+ " AND e.emp_code = to_char(sd.emp_code) AND e.EMP_TYPE_ID!=03) "
+ " WHERE "
+ " EXISTS (SELECT e.emp_id from EMPLOYEE e WHERE e.VERIFY_STATUS = 1 "
+ " AND e.emp_code = to_char(sd.emp_code) AND e.EMP_TYPE_ID!=03 AND e.RELIEF_TYPE IS NULL) "
+ " AND sd.EMP_ID IS NULL";
if (circleId != null && !circleId.trim().equals("")) {
q += " AND sd.REFERENCE_ID LIKE '" + circleId + "-%' ";
} else {
q += " AND sd.REFERENCE_ID LIKE '" + regionId + "-%' ";
}

// System.out.println("q " + q);
MapSqlParameterSource param = new MapSqlParameterSource();
getNamedParameterJdbcTemplate().update(q, param);

}

请给我建议最好的解决方案

最佳答案

您需要找到阻止查询运行的行。

运行此查询:

SELECT sd.emp_code, COUNT(*) as cnt 
FROM EMPLOYEE e
WHERE e.VERIFY_STATUS = 1 AND
e.RELIEF_TYPE IS NULL AND
e.emp_code = to_char(sd.emp_code) AND
e.EMP_TYPE_ID <> 03
GROUP BY sd.emp_code
HAVING COUNT(*) > 1;

这存在候选人问题。你能做什么?最简单的是问题之一:

  • SELECT 更改为 SELECT MAX(sd.emp_code)
  • WHERE 更改为 AND rownum = 1

关于java - 单行子查询返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52329197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com