我正在尝试返回一个 sqlite3 查询,该查询将允许我循环浏览社交媒体帖子并显示帖子和用户详细信息以及每个帖子的评论数量。
我不知道如何编写一个 SQL 查询来获取帖子的评论数。
这是我在 ERD 中的数据库方案:
这是我的查询:
SELECT u.name, u.icon, p.date, p.title, p.message,
(SELECT comment.postId, COUNT(comment.Id)
FROM comment
WHERE comment.postID = p.Id) as commentno
FROM Post p, User u
WHERE p.userID = u.Id
当我尝试运行它时我看到什么:
Error: sub-select returns 2 columns - expected 1
我想看到的内容:
Michael Scott, Michael.png, 2019-08-27, "Blog title", "Blog message", 7
最佳答案
请参阅我上面的评论。我认为你的意图是这样的:
SELECT u.name, u.icon, p.date, p.title, p.message,
c.postId, COUNT(c.Id) as commentno
FROM Post p LEFT JOIN User u ON p.userID = u.Id
LEFT JOIN Comment c on p.ID = c.PostID
GROUP BY u.name, u.icon, p.date, p.title, p.message, c.postId
更新
正如所指出的,我原来的答案有同样的错误(因为我只是快速移动了别名。这里我重新格式化您的查询以使用 JOINs
。我假设您的 Post
表有评论 ID,但您可以找出适合 JOIN
的列。
关于mysql - 如何正确编写子查询来获取每个帖子的评论数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57702287/