关于分页一个连表的内容问题

Page<Article> paginate = Article.dao.paginate(pageNumber, pageSize, "select sa.*","from sk_article sa LEFT JOIN sk_replay sr ON sa.id=sr.article_id WHERE sr.user_id=?",id);
主表是sk_article  文章表,连的表示sk_replay 文章的评论表,当我想查询某人对那些文章做了评论的时候,发现查出来的文章有重复的,
想咨询一下大家怎么样解决的!

评论区

2019-08-12 13:21

INNER JOIN 吧。如果一个人对同一篇文章进行了多次评论,还要group by

zaonixian

2019-08-12 13:31

@影 嗯,如果我想把多次评论一起查出来可以么!像这种条件查询怎么实现一对多!

2019-08-12 13:35

@zaonixian mysql 有一个函数,group_concat(),你可以看看

zaonixian

2019-08-12 13:38

因为我在看文档的时候有俩种查法,第一中sql语句虽然是俩个表示一对一的关系,但是查询的是一对一;第二种的话如果是用groupby的话是可以解决一对多,但是在一个实体中查询另一个实体列表的话会不会出现无论你需不需要另外一个实体的列表都会出现查询另一个实体列表的情况。

zaonixian

2019-08-12 13:46

Page paginate = Article.dao.paginate(pageNumber, pageSize, "select sa.*","from sk_article sa LEFT JOIN sk_replay sr ON sa.id=sr.article_id WHERE sr.user_id=? group by sr.article_id",id);
for (Article article : paginate.getList()) {
String sql="select * from sk_replay where user_id=? and article_id=?";
List replays = Replay.dao.find(sql, article.getId(),id);
article.put("replays", replays);
}
System.out.println(Json.getJson().toJson(paginate.getList()));
最后我用这种办法解决!

zaonixian

2019-08-12 15:36

@影 对,想起来了!谢谢!

热门反馈

扫码入社