3 回答
TA贡献1942条经验 获得超3个赞
您需要将子查询与外部查询正确关联。问题是您对外部和内部使用相同的别名,因此子句中的条件WHERE实际上并没有过滤任何内容。您应该使用表别名来避免此问题。
forum无论如何,没有必要在子查询中使用该表。您可以将其写为:
SELECT
f.forum_id,
f.message,
(
SELECT COUNT(*)
FROM forumvotes fv
WHERE fv.forum_id = f.forum_id
) AS voteCount
FROM forums f
ORDER BY ??
LIMIT 3
ORDER BY如果您希望结果在连续执行中保持一致,您还需要一个子句。
TA贡献1776条经验 获得超12个赞
根据您的描述,您可能希望在此处执行“IN”子查询。
SELECT COUNT(forumvotes.forum_id) AS voteCount FROM forumvotes WHERE forumvotes.forum_id IN (SELECT forums.forum_id, forums.message FROM forums LIMIT 3)
具体来说,这将只返回前三个论坛行的 id,并将它们与一些论坛信息连接起来
TA贡献1798条经验 获得超3个赞
我将论坛表设置为包含每个的JOIN嵌套查询COUNT, GROUP BYforum_id
SELECT f.forum_id, f.message, a.voteCount
FROM forums f
JOIN (SELECT COUNT(forumvotes.forum_id) AS voteCount, forumvotes.forum_id
FROM forumvotes
GROUP BY forumvotes.forum_id) a ON f.forum_id = a.forum_id
- 3 回答
- 0 关注
- 124 浏览
添加回答
举报