mysql-如何在关系查询中分页模糊查询的结果

r7xajy2e  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(289)

mysql中有两个表。
文章表:

物品标签表

现在,我想根据'title of article'或'tag\u name of article\u tag'查询结果,并按article\u 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

但是这个查询所有结果的语句,我不能根据文章的id进行分页。

我不想要存储过程。
我应该如何编写sql语句?
----以下为补充----
我想通过标题或标签来搜索文章,所以如果输入'test',我应该得到两篇文章(如上图),但这只是两篇文章,结果量是三,因为标签名称不同,第一篇文章(id=1)有两个标签,所以mysql联查后返回两个数据。
所以在上图中只有两个数据,在mybatis orm之后,结果类是一个数组[article#1,article#2]。以及文章#2的tags=['tag1','tag2']。
我需要分页文章,而不是整个sql结果

xpszyzbs

xpszyzbs1#

现在我想到了一个答案,这是我的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

r1zhe5dt

r1zhe5dt2#

等等,你为什么不能直接用订单号?也许我不明白。。

相关问题