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

标签 sql mysql database

我很难想出如何准确地表达这个问题,所以我给你举个例子。

假设用户请求一个页面,该页面将显示多篇文章以及对其中每一篇文章的多条评论。因此,您不仅需要选择多条文章记录,而且每条记录都需要关联多条评论记录。

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

最佳答案

这没有绝对的对或错,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;

comments 列将包含所有评论id,comments_count 返回每篇文章的评论数

PS:我觉得left join比较合适

关于sql - 用于选择多行的最佳 mysql 查询,每个行都需要来自另一个表的多个关联行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4654899/

相关文章:

mysql - 使用 IN 语句进行缓慢的 mysql 删除查询

mysql - 返回开放酒吧 - 午夜问题

php - 即使在 codeigniter 中 db 的主机名错误,也继续执行

python - 如何创建没有主键的Storm表?

mysql - 如何在Arel中表达MySql函数 `GROUP_CONCAT(DISTINCT column)`?

database - 如何使用用户定义的字符串索引数据框?

sql - 如何使用 MS Access 将一个表分成多个表?

SQL:列表字段包含子列表

mysql - 为什么 phpmyadmin 会明显快于 mysql 命令行?

mysql - 无法在 MySql Workbench 中连接 Google Cloud SQL