MySQL 语法错误: '== 0' 在子查询中的使用
MySQL 语法错误: '== 0' 在子查询中的使用
错误信息:
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== 0 )caseAss ORDER BY caseAss.caseCode ASC ) tmp_count' at line 63
问题:
错误发生在子查询 (select count(*) from lts_file_info where LINK_CODE = a.id) == 0 中,原因是 MySQL 中的比较运算符应该使用 = 而不是 ==。
解决方法:
将子查询中的 == 替换为 = 即可解决该错误。
修改后的 SQL 语句:
SELECT COUNT(0)
FROM (
SELECT DISTINCT caseAss.*
FROM (
SELECT
a.SCENA_CODE AS 'scenaCode',
a.CASE_CODE AS 'caseCode',
a.ROAD_CODE AS 'linkRoads',
a.CASE_DESCRIBE AS 'caseDescribe',
a.CASE_TYPE AS 'caseType',
ltctn.TYPE_NAME AS 'caseTypeName',
a.TEST_OBJECTIVE AS 'testObjective',
a.TEST_CONDITION AS 'testCondition',
a.CREATE_USER AS 'createUser',
a.UPDATE_USER AS 'updateUser',
a.remark AS 'remark',
a.id AS 'id',
a.create_by AS 'createBy',
a.create_dept AS 'createDept',
a.create_time AS 'createTime',
a.update_by AS 'updateBy',
a.update_time AS 'updateTime',
a.update_ip AS 'updateIp',
a.version AS 'version',
a.del_flag AS 'delFlag',
lsm.SCENA_CODE AS 'name',
ltctn.PARENT_NAMES AS 'caseTypeNames'
FROM
lts_test_case_manage a
LEFT JOIN lts_test_case_type_new ltctn ON a.CASE_TYPE = ltctn.id
LEFT JOIN lts_scena_manage lsm ON a.SCENA_CODE = lsm.id
LEFT JOIN sys_user t ON FIND_IN_SET(t.id, a.create_by)
LEFT JOIN sys_dept d ON t.dept_id = d.id
WHERE
a.del_flag = ?
AND (SELECT COUNT(*) FROM lts_file_info WHERE LINK_CODE = a.id) = 0
) caseAss
ORDER BY caseAss.caseCode ASC
) tmp_count;
通过进行此更改,应该可以解决该错误。
原文地址: https://www.cveoy.top/t/topic/qFGI 著作权归作者所有。请勿转载和采集!