mybatis执行select子查询分页报错

select
    adr.modifiedname,
    adr.modifiedon,
    adr.comment_tag,
    adr.post_desc,
    adr.qualifications,
    (
    SELECT
                GROUP_CONCAT(r.user_name)
                FROM
                post_recruiter_related r
                WHERE
                r.post_id =  ah.post_id
                AND r.isdeleted = 0
    ) AS recruitPersons
    from ad_headhunter_related ah LEFT JOIN ad_release_record adr ON ah.post_id = adr.post_id
    where adr.isdeleted=0
   HAVING recruitPersons like '%杰%'
    ORDER by ah.create_time DESC

我有一条sql语句,其中select里面有一个子句关联另一张表,这条sql单独执行没问题,但是配合PageHelper分页就报错,提示“ SELECT count(0) FROM ad_headhunter_related ah LEFT JOIN ad_release_record adr ON ah.post_id = adr.post_id WHERE adr.isdeleted = 0 AND ah.is_deleted = 0 AND ah.hunter_id = 83 AND adr.post_nameE '%杰%' HAVING recruitPerons LIKE CONCAT('
%', ?, '%')
提示找不到recruitPersons这个列,这是什么原因呢?

SELECT count(0) FROM ad_headhunter_related ah LEFT JOIN ad_release_record adr ON ah.post_id = adr.post_id WHERE adr.isdeleted = 0 AND ah.is_deleted = 0 AND ah.hunter_id = 83 AND adr.post_nameE '%杰%' HAVING recruitPerons LIKE CONCAT('
%', ?, '%')

这个sql肯定是会提示找不到recruitPersons这个列,这句sql应该是分页时查询数据总数的吧?你可以试试这样改改,因为你查询数据总数时,并没有把recruitPersons这列查询出来,这个是子查询出来的临时字段并不是数据库字段

     select count(*) from (SELECT  (SELECT GROUP_CONCAT(r.user_name) FROM post_recruiter_related r WHERE r.post_id =  ah.post_id AND r.isdeleted = 0) AS recruitPersons FROM ad_headhunter_related ah LEFT JOIN ad_release_record adr ON ah.post_id = adr.post_id WHERE adr.isdeleted = 0 

AND ah.is_deleted = 0 AND ah.hunter_id = 83 AND adr.post_nameE '%杰%' HAVING recruitPerons LIKE CONCAT('%', ?, '%')) as tab1

就是他在执行count时没有查询我这个子句,但是我这个子句又是后面的过滤条件

sql语句执行顺序是先having 再select 当然没有这个列啊!

一个语句的执行顺序 from-- on---join--where--group by-- with --having-- select --distinnct --order by --limit 楼主看看 楼主的语句适合这个顺序吗? 我看不适合

where 条件 放在最后边

select
ah.post_id,
adr.modifiedname,
adr.modifiedon,
adr.comment_tag,
adr.post_desc,
adr.qualifications

(
SELECT
            GROUP_CONCAT(r.user_name)
            FROM
            post_recruiter_related r
            WHERE
            r.post_id =  ah.post_id
            AND r.isdeleted = 0
) AS recruitPersons
from ad_headhunter_related ah LEFT JOIN ad_release_record adr ON ah.post_id = adr.post_id
where adr.isdeleted=0

and recruitPersons like '%杰%'
ORDER by ah.create_time DESC

    感觉像子查询的条件没满足  你试试