我在执行此查询时遇到问题,希望有人可以提供帮助。
SELECT
myTable.id,
myTable.subject,
myTable.upvotes,
myTable.downvotes,
(SELECT COUNT(id)
FROM myTable
WHERE myTable.thread = myTable.id) AS comments_count
FROM myTable
基本上我有一个包含帖子和评论的表格,评论线程与原始帖子的 ID 相关联。在我的查询中,我想显示当前 id/行的所有行中有多少个 relpies(多少个线程 = id)。
我希望这是有道理的:)
最佳答案
您需要指定具有新别名的表以在子查询中匹配,否则它将与同一表中具有 id 的线程匹配
SELECT
m.id,
m.subject,
m.upvotes,
m.downvotes,
(SELECT COUNT(id)
FROM myTable
WHERE myTable.thread = m.id) AS comments_count
FROM myTable m
或者更好地使用LEFT JOIN
SELECT
m.id,
m.subject,
m.upvotes,
m.downvotes,
COUNT(mm.id) AS comments_count
FROM myTable m
LEFT JOIN myTable mm ON(mm.thread = m.id)
GROUP BY m.id
关于php - MYSQL对当前行计数子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22584166/