【问题标题】:About grouping results in SQL query关于 SQL 查询中的分组结果
【发布时间】:2012-03-05 15:15:59
【问题描述】:

对不起,如果这是一个非常愚蠢的问题。我有一个包含 3 列的表:id、user_id 和 article_id,它们表示用户和文章表之间的多对多关系。我正在使用 PHP 和 MySQL

示例记录:

  • id: 1 user_id: 5 article_id: 6(表示用户5喜欢文章6)
  • id: 2 user_id: 1 article_id: 6
  • id: 3 user_id: 2 article_id: 1
  • id: 4 user_id: 3 article_id: 3

我想按 article 对结果进行分组,并得到一个像这样的数组:

array[6] = {5,1};
array[1] = {2};
array[3] = {3};

这样我就可以方便地获得喜欢每篇文章的用户。问题是,实现它的最佳方法是什么?任何帮助将不胜感激。谢谢

【问题讨论】:

  • 我正在使用 PHP、Doctrine 和 MYSQL。 Symfony 更准确。我知道我可以通过迭代 php 中的结果来做到这一点,但我不知道是否有更简单的方法,因为我不是专家。对不起我的英语,谢谢你的回答!

标签: php sql


【解决方案1】:

您可以在 PHP 端迭代结果并分组到数组中,或者使用 GROUP_CONCAT 然后 explode

【讨论】:

  • 感谢 Distdev,我不知道第二种方式,尽管在 Doctrine 中我似乎无法使用 group_concat。我之前没有提到它,所以这是我的错误。
【解决方案2】:

不熟悉“Doctrine”语法,如果能提供查询字符串,应该可以通过

select article_id, group_concat( user_id ) as LikedByUsers
   from YourTable
   group by article_id

第一列是文章 ID,第二列是逗号分隔的喜欢它的用户列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多