用于选择多行的最佳mysql查询,EACH需要来自另一个表的多个关联行

时间:2011-01-11 06:41:15

标签: sql mysql database

我很难想出如何说出这个问题所以我会给你一个例子。

假设一个用户请求一个页面,该页面将显示多篇文章和多篇评论。因此,您不仅需要选择多篇文章记录,而且这些记录中的每一条记录都需要有几条与之相关的评论记录。

完成此任务的最佳查询是什么?感谢。

2 个答案:

答案 0 :(得分:3)

这不是绝对正确或错误,join将返回更大的数据集,但可以在一个查询中获取所有内容

根据您的要求,如果您只需要评论计数+评论ID列表(供以后使用),请考虑使用group_concat

select 
  article.*, 
  group_concat(comment.id) as comments, 
  count(comment.id) as comments_count
from 
  article
left join comment 
on comment.article_id=article_id
group by article.id;

列注释将包含所有注释id,以及comments_count返回每篇文章的注释数

PS :我认为左连接更合适

答案 1 :(得分:1)

您想使用INNER JOIN。

SELECT 
     article.*,
     comment.*
FROM
     article
INNER JOIN
     comment
ON
     comment.article_id = article.id

这将为您提供冗余数据(多行的相同文章数据),但只有一个sql语句/连接到数据库。