前言
在项目中,使用mybatis做一对多关联,出现数据条数不匹配的情况,比如要查询10条,由于一对多的关系导致最终得到的数据条数变少。利用子查询解决。
解决代码
直接上解决后的代码。
SELECT
t.ID,
t.USER_ID,
t.NAME,
t.CONTENT,
t.DESCRIPTION,
t.STATUS,
t.FAVO_COUNT,
t.USE_COUNT,
t.CREATE_TIME,
tag.ID tagId,
tag.NAME tagName,
tag.TYPE tagType
FROM
t_template t
INNER JOIN t_template_tag tt ON t.ID = tt.TEMPLATE_ID
INNER JOIN t_tag tag ON tt.TAG_ID = tag.ID
WHERE
t.ID IN (
SELECT
temp.ID
FROM
(
SELECT DISTINCT
t.ID
FROM
t_template t
INNER JOIN t_template_tag tt ON t.ID = tt.TEMPLATE_ID
INNER JOIN t_tag tag ON tt.TAG_ID = tag.ID
LIMIT 0, 10
) temp
)
AND t.STATUS = 1
AND t.IS_ACTIVE = 0
AND tag.IS_ACTIVE = 0
ORDER BY
t.USE_COUNT DESC
可以看到,分页的是 LIMIT 0,10
,