需要重写查询以在辅助表中选择多个记录

时间:2014-11-21 17:49:32

标签: mysql

我有以下查询:

SELECT
            p.id,
            p.name,
            tc.comment
        FROM people AS p
        LEFT JOIN comments AS tc ON (tc.pID = p.id)
        WHERE p.projID = $project_id
        GROUP BY p.id

当它最初被写入时,每个人曾经只有一个评论,但后来改为允许来自同一个人的多个评论。但是,此查询仅选择与特定人匹配的第一个注释。我想知道是否有一种方法可以重写它以便选择与每个人相关的所有评论,或者我是否需要将评论分成它自己的查询以在每个人的内部运行行?但这似乎效率很低。

2 个答案:

答案 0 :(得分:1)

您需要使用GROUP_CONCAT()聚合函数,它将返回合并在一列中的所有注释:

SELECT
  p.id,
  p.name,
  GROUP_CONCAT(tc.comment) AS comments
FROM
  people AS p LEFT JOIN comments AS tc
  ON tc.pID = p.id
WHERE
  p.projID = $project_id
GROUP BY
  p.id,
  p.name

答案 1 :(得分:0)

删除GROUP BY,它将返回所有注释。

SELECT
            p.id,
            p.name,
            tc.comment
        FROM people AS p
        LEFT JOIN comments AS tc ON (tc.pID = p.id)
        WHERE p.projID = $project_id