有两个表,q_entries
(80条记录)和相关的q_entries_comments
(37条记录)。
当我加入时:
select q_entries.*,q_entries_comments.comment
from q_entries
left join q_entries_comments
on q_entries_comments.entry_id=q_entries.id
我得到了109条记录。
现在,我想将结果限制为仅10个条目,首先我这样做:
select q_entries.*,q_entries_comments.comment
from q_entries
left join q_entries_comments
on q_entries_comments.entry_id=q_entries.id
limit 0,10
但这不是我想要的 - 在结果集中有一个id = 1的重复条目,以及附加到这个条目的10条评论'。
我想要的是获得10个不同的条目,每个条目的评论数量与实际数量相同,所以我这样做:
select q_entries.*,q_entries_comments.comment
from (select * from q_entries limit 0,10) as q_entries
left join q_entries_comments
on q_entries_comments.entry_id=q_entries.id
现在我得到了我想要的东西,即37条记录(对前10条'条目有很多评论),但只有10条条目'条目'。
当我向相关表添加where
语句时会出现问题,如下所示:
select q_entries.*,q_entries_comments.comment
from (select * from q_entries limit 0,10) as q_entries
left join q_entries_comments
on q_entries_comments.entry_id=q_entries.id
where q_entries_comments.comment like '%b%'
它显然显示我的参赛作品太少,因为它会搜索'%b%'仅在前10条'附带的评论中。我真正想要的是总是得到10个条目'和他们所附的所有评论。
怎么做?
答案 0 :(得分:1)
您可以在第二个内部查询中使用WHERE子句,如下所示:
select q_entries.*,q_entries_comments.comment
from (select * from q_entries limit 0,10) as q_entries
left join (select * from q_entries_comments where q_entries_comments.comment like '%b%') as q_entries_comments
on q_entries_comments.entry_id=q_entries.id