问题遇到的现象和发生背景
使用with as子查询中用union all出现问题
问题相关代码,请勿粘贴截图
WITH iporesult AS(
(SELECT
a.index_score,
a.ipo_type
FROM t_b_ipo_one_level_index_score a
WHERE
a.company_id = #{companyId}
AND a.ipo_type = '1'
AND (
a.report_time IS NULL
OR a.report_time = (SELECT MAX(b.report_time) FROM t_b_ipo_one_level_index_score b
WHERE b.company_id = #{companyId} AND b.ipo_type = '1')
)ORDER BY a.report_time ASC)
UNION ALL
(SELECT
a.index_score,
a.ipo_type
FROM t_b_ipo_one_level_index_score a
WHERE
a.company_id = #{companyId}
AND a.ipo_type = '2'
AND (
a.report_time IS NULL
OR a.report_time = (SELECT MAX(b.report_time) FROM t_b_ipo_one_level_index_score b
WHERE b.company_id = #{companyId} AND b.ipo_type = '2')
)ORDER BY a.report_time ASC)
UNION ALL
(SELECT
a.index_score,
a.ipo_type
FROM t_b_ipo_one_level_index_score a
WHERE
a.company_id = #{companyId}
AND a.ipo_type = '3'
AND (
a.report_time IS NULL
OR a.report_time = (SELECT MAX(b.report_time) FROM t_b_ipo_one_level_index_score b
WHERE b.company_id = #{companyId} AND b.ipo_type = '3')
)ORDER BY a.report_time ASC)
UNION ALL
(SELECT
a.index_score,
a.ipo_type
FROM t_b_ipo_one_level_index_score a
WHERE
a.company_id = #{companyId}
AND a.ipo_type = '4'
AND (
a.report_time IS NULL
OR a.report_time = (SELECT MAX(b.report_time) FROM t_b_ipo_one_level_index_score b
WHERE b.company_id = #{companyId} AND b.ipo_type = '4')
)ORDER BY a.report_time ASC)
UNION ALL
(SELECT
a.index_score,
a.ipo_type
FROM t_b_ipo_one_level_index_score a
WHERE
a.company_id = #{companyId}
AND a.ipo_type = '5'
AND (
a.report_time IS NULL
OR a.report_time = (SELECT MAX(b.report_time) FROM t_b_ipo_one_level_index_score b
WHERE b.company_id = #{companyId} AND b.ipo_type = '5')
)ORDER BY a.report_time ASC)
)
SELECT
SUM(ipo.index_score) AS ipoMatchingDegreeScore,
ipo.ipo_type as ipoType,
CASE ipo.ipo_type
WHEN '1' THEN '主板'
WHEN '2' THEN '新三板'
WHEN '3' THEN '科创板'
WHEN '4' THEN '创业板'
WHEN '5' THEN '北交所'
ELSE '' END AS ipoMatchingDegreeName
FROM iporesult ipo
GROUP BY ipo.ipo_type
运行结果及报错内容
Error querying database. Cause: java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :'sult AS(
(SELECT
', expect RPAREN, actual LPAREN pos 32, line 1, column 19, token LPAREN : WITH iporesult AS(
(SELECT
a.index_score,
a.ipo_type
FROM t_b_ipo_one_level_index_score a
WHERE
a.company_id = ?