Java SQL查询删除重复记录无效

Java SQL查询删除重复记录无效,java,mysql,sql,Java,Mysql,Sql,你好。我的Java代码中有一个删除表中重复行的查询。一开始它起作用了,有一段时间我没有碰这个项目。但是在几天前运行该文件时,我的代码抛出了异常。这是我的代码: String query = "DELETE error_log FROM error_log INNER JOIN " + "(SELECT min(id) minid, service_source, channel,transaction_type, provider_name, pido_

你好。我的Java代码中有一个删除表中重复行的查询。一开始它起作用了,有一段时间我没有碰这个项目。但是在几天前运行该文件时,我的代码抛出了异常。这是我的代码:

String query = "DELETE error_log FROM error_log INNER JOIN "
                + "(SELECT  min(id) minid, service_source, channel,transaction_type, provider_name,     pido_account, beneficiary_id, error_description, error_date FROM error_log "
                + "GROUP BY service_source, channel, transaction_type, provider_name, pido_account, beneficiary_id, error_description, error_date "
                + "HAVING COUNT(1) > 1 AS duplicates ON "
                        + "(duplicates.service_source = error_log.service_source AND duplicates.channel = error_log.channel "
                    + "AND duplicates.transaction_type = error_log.transaction_type AND duplicates.provider_name = error_log.provider_name "
                    + "AND duplicates.pido_account = error_log.pido_account AND duplicates.beneficiary_id = error_log.beneficiary_id "
                    + "AND duplicates.error_description = error_log.error_description AND duplicates.error_date = error_log.error_date "
                    + "AND duplicates.minid <> error_log.id"
                        + ")"
                    + ")";

        int deploy = duplicate.executeUpdate(query);
我后来得到这个:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行使用near“AS duplicates ON duplicates.service_source=error_log.service_source AND dupli”的正确语法

如何更正此问题并将重复项从表中删除?

您的第行缺少一个+将COUNT1>1作为重复项打开,并在末尾增加一个

String query = "DELETE error_log FROM error_log INNER JOIN "
                + "(SELECT  min(id) minid, service_source, channel,transaction_type, provider_name,     pido_account, beneficiary_id, error_description, error_date FROM error_log "
                + "GROUP BY service_source, channel, transaction_type, provider_name, pido_account, beneficiary_id, error_description, error_date "
                + "HAVING COUNT(1) > 1 ) AS duplicates ON "
                        + "(duplicates.service_source = error_log.service_source AND duplicates.channel = error_log.channel "
                    + "AND duplicates.transaction_type = error_log.transaction_type AND duplicates.provider_name = error_log.provider_name "
                    + "AND duplicates.pido_account = error_log.pido_account AND duplicates.beneficiary_id = error_log.beneficiary_id "
                    + "AND duplicates.error_description = error_log.error_description AND duplicates.error_date = error_log.error_date "
                    + "AND duplicates.minid <> error_log.id"
                    + ")";

        int deploy = duplicate.executeUpdate(query);

如果您没有做任何更改,并且它停止工作,1您确定您测试了此代码吗?还有其他人在你不知情的情况下做了任何改变吗

我猜别人在我不知情的情况下做出了改变。