今天遇到系统异常的问题。
子查询多了一行,众所周知独我不知这个子查询的查询结果是只能有一行。那么现在知道了我们就根据报错提示找到相应的mapper.xml文件的那个sql语句里纠错。那么我们开始找这条语句的子查询的问题首先:
SELECT '' AS bugID,A.`SUMMARY` AS `describe`,
(SELECT CONCAT(last_name ,first_name) FROM cwd_user WHERE user_name = A.`ASSIGNEE`) AS liablePerson,
(SELECT CONCAT(last_name , first_name) FROM cwd_user WHERE user_name = A.`REPORTER`) AS testLiablePerson ,
c.`pname` AS `status`,
(SELECT email_address FROM cwd_user WHERE user_name = A.`REPORTER`) AS emailAddressTest ,
(SELECT email_address FROM cwd_user WHERE user_name = A.`ASSIGNEE`) AS emailAddressDev
FROM `jiraissue` a, project b, issuestatus c
WHERE
a.`PROJECT` = b.`ID` AND a.`issuestatus` = c.`ID`
AND a.issuenum = #{bugID,jdbcType=VARCHAR}
AND b.`pkey` = #{projectName,jdbcType=VARCHAR}
看得出这里有四个子查询,哪个出了问题呢(CONCAT是把查出来的firstname和lastname连接)然后我们先把select的条件变成*查出来到底要啥。得到结果我们根据assignee和reporter的
结果分别将子查询查一下发现根据报错的条件查发现是第二条有重复,怎么办呢,这四条都会出现这个问题,所以我们优化一下在子查询上加个limit条件只用子查询结果的第一条就可以了。龟龟就是这样,再见。