MySQL - 如何在关系查询中对模糊查询的结果进行分页

MySQL - How to page the results of fuzzy queries in relational queries

mysql中有两个table。

文章table:

article_tag table

现在,我想根据'title of article'或'tag_name of article_tag'查询结果,并且我想按article_id对结果进行分页。

这是我的sql声明

select a.*, atag.tag_name from article a, article_tag atag 
where (a.title like '%test%' or atag.tag_name like '%test%') 
    and a.article_id=atag.article_id 
order by a.gmt_modified desc

但是这条查询所有结果的语句,我无法按照article_id进行分页。

我不想要存储过程。

sql语句应该怎么写?

----以下为补充----

我想按标题或标签搜索文章,所以如果我输入'test',我应该得到两篇文章(如上图),但只有两篇文章,结果数量是三篇,因为不同的tag_name,文章one(id=1)有两个tag,所以mysql return关联查询后有两个数据

所以上图中只有两个数据,mybatis orm后,结果class是一个数组[Article#1, Article#2]。而文章#2 的标签 = ['tag1', 'tag2'].

我需要分页文章,而不是整个 sql 结果

等等,你为什么不能直接使用 order by a.article_id? 可能我没看懂……

现在我想到一个答案,这是我的sql声明,使用exists

    SELECT
        temp.*,
        atag.*
    FROM
        (
        SELECT
            a.*
        FROM
            article a
        WHERE
            a.title LIKE '%#{searchContent}%'
            OR EXISTS ( SELECT * FROM article_tag WHERE tag_name LIKE '%#{searchContent}%' AND a.article_id = article_id )
        ORDER BY
        a.gmt_modified DESC,
        a.gmt_create DESC
        LIMIT #{offset}, #{rows}
        ) temp
    LEFT JOIN article_tag atag ON temp.article_id = atag.article_id