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