一个查询语句在navicat中可以执行,但是在mybatis中报错了

报错提示的语句和我写的mybatis中的语句不一样,不知道怎么个回事儿0.0。

mybatis中sql语句:

        SELECT
            t.m_id as 'id',
            t.name,
            t.numbers,
            t.s_id as 'spId',
            t.learned,
            t.learning,
            t.plan_finish_date as 'planFinishDate',
            t.plan,
            t.next_plan as 'nextPlan'
        FROM(
            SELECT
                m.id as 'm_id',
                m.name,
                m.createdate,
                s.numbers,
                s.id as 's_id',
                s.learned,
                s.learning,
                s.plan_finish_date ,
                s.plan,
                s.next_plan
            FROM
                member AS m
            LEFT JOIN study_plan AS s ON m.id = s.m_id
            ORDER BY
                s.numbers DESC
            LIMIT 10000
        ) t
        GROUP BY t.name
        ORDER BY t.createdate

我多粘贴了一些报错信息

Error querying database.  Cause: java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :'
        ) tmp_count',expect RPAREN, actual EOF tmp_count : select count(1) from (SELECT

        t.m_id as 'id',
        t.name as 'name',
        t.numbers as 'numbers',
        t.sp_id as 'spId',
        t.learned as 'learned',
        t.learning as 'learning',
        t.plan_finish_date as 'planFinishDate',
        t.plan as 'plan',
        t.createdate as 'createdate',
        t.next_plan as 'nextPlan'

        FROM (
        SELECT
        m.id as 'm_id',
        m.`name`,
        m.createdate,
        s.numbers,
        s.id as 'sp_id',
        s.learned,
        s.learning,
        s.plan_finish_date ,
        s.plan,
        s.next_plan
        FROM
        member AS m LEFT JOIN study_plan AS s ON m.id = s.m_id
        ) tmp_count
### Cause: java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :'
        ) tmp_count',expect RPAREN, actual EOF tmp_count : select count(1) from (SELECT

        t.m_id as 'id',
        t.name as 'name',
        t.numbers as 'numbers',
        t.sp_id as 'spId',
        t.learned as 'learned',
        t.learning as 'learning',
        t.plan_finish_date as 'planFinishDate',
        t.plan as 'plan',
        t.createdate as 'createdate',
        t.next_plan as 'nextPlan'

        FROM (
        SELECT
        m.id as 'm_id',
        m.`name`,
        m.createdate,
        s.numbers,
        s.id as 'sp_id',
        s.learned,
        s.learning,
        s.plan_finish_date ,
        s.plan,
        s.next_plan
        FROM
        member AS m LEFT JOIN study_plan AS s ON m.id = s.m_id
        ) tmp_count
; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; sql injection violation, syntax error: syntax error, error in :'
        ) tmp_count',expect RPAREN, actual EOF tmp_count : select count(1) from (SELECT

        t.m_id as 'id',
        t.name as 'name',
        t.numbers as 'numbers',
        t.sp_id as 'spId',
        t.learned as 'learned',
        t.learning as 'learning',
        t.plan_finish_date as 'planFinishDate',
        t.plan as 'plan',
        t.createdate as 'createdate',
        t.next_plan as 'nextPlan'

        FROM (
        SELECT
        m.id as 'm_id',
        m.`name`,
        m.createdate,
        s.numbers,
        s.id as 'sp_id',
        s.learned,
        s.learning,
        s.plan_finish_date ,
        s.plan,
        s.next_plan
        FROM
        member AS m LEFT JOIN study_plan AS s ON m.id = s.m_id
        ) tmp_count; nested exception is java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :'
        ) tmp_count',expect RPAREN, actual EOF tmp_count : select count(1) from (SELECT

        t.m_id as 'id',
        t.name as 'name',
        t.numbers as 'numbers',
        t.sp_id as 'spId',
        t.learned as 'learned',
        t.learning as 'learning',
        t.plan_finish_date as 'planFinishDate',
        t.plan as 'plan',
        t.createdate as 'createdate',
        t.next_plan as 'nextPlan'

        FROM (
        SELECT
        m.id as 'm_id',
        m.`name`,
        m.createdate,
        s.numbers,
        s.id as 'sp_id',
        s.learned,
        s.learning,
        s.plan_finish_date ,
        s.plan,
        s.next_plan
        FROM
        member AS m LEFT JOIN study_plan AS s ON m.id = s.m_id
        ) tmp_count

xml截个图
图片说明

你这两个sql也不一样啊

看一下你dao层的方法名和mapper中sql片段的id是否相同

试下把子查询里的 LIMIT 10000 这个去掉看还会不会报错

我看报错里面有 select count(1),是不是多个返回结果用单个对象接收了

你这里代码对sql加了一层统计总数处理,你这里代码报错的截图不完整,我看执行的sql已经不是你想象的那个sql了,先把完整报错的sql到数据库执行下

sql取别名,别名不用加单引号

你这两个SQL首先不一样 其次就是你的SQL是不是大小写的问题呢 可能跟你的java类大小写不匹配 但是数据库就不管这个了