Mysql 如何将这两个查询合并为一个查询?

Mysql 如何将这两个查询合并为一个查询?,mysql,sql,database,join,Mysql,Sql,Database,Join,我无法将这两个查询正确地组合在一起 我想获得特定讨论的评论,每条评论都可以有多张图像,这些图像存储在图像表中 SELECT c.CommentID, c.Body, u.Name FROM Comments c JOIN User u ON u.UserID = c.InsertUserID WHERE c.DiscussionID = 1 SELECT Path FROM Images WHERE commentID = ? 这是我想到的,但它不起作用: SELECT c.CommentI

我无法将这两个查询正确地组合在一起

我想获得特定讨论的评论每条评论都可以有多张图像,这些图像存储在图像表中

SELECT c.CommentID, c.Body, u.Name
FROM Comments c
JOIN User u ON u.UserID = c.InsertUserID
WHERE c.DiscussionID = 1

SELECT Path
FROM Images
WHERE commentID = ?
这是我想到的,但它不起作用:

SELECT c.CommentID, c.Body, u.Name, i.Path
FROM Comments c
JOIN User u ON u.UserID = c.InsertUserID
LEFT JOIN Images i ON c.CommentID = i.ForeignID
WHERE c.DiscussionID = 1
您将收到每一条评论的一行,所有评论图像都将位于“图像”字段中。图像将由换行符(
“\n”
)分隔

按要求加入
版本:

SELECT c.CommentID, c.Body, NAME, GROUP_CONCAT(Path SEPARATOR "\n") AS 'images'
FROM Comments c
LEFT JOIN Images i ON(i.commentID = c.CommentID)
WHERE   c.DiscussionID = 1
GROUP BY c.CommentID

请注意,
JOIN
version可能不如子查询版本有效。第一个查询中的GROUPBYPHASE发生在子查询级别,而第二个查询中的GROUPBYPHASE发生在所有行都已联接之后。当然,查询优化器可能会在这里发挥一些神奇的作用,而且它们可能具有相同的成本。

为什么CommentID等于ImageID?显示您的表模式。这些表格有什么关系。CommentID等于Images.ForeignDokay,下一个问题。什么部分不起作用,你看到了什么,你期待着什么。我希望有一个路径数组,但路径总是空的。
。。。在c.CommentID=i.foreigned
-foreigned是什么意思?是否也可以使用join而不是select?
SELECT c.CommentID, c.Body, NAME, GROUP_CONCAT(Path SEPARATOR "\n") AS 'images'
FROM Comments c
LEFT JOIN Images i ON(i.commentID = c.CommentID)
WHERE   c.DiscussionID = 1
GROUP BY c.CommentID