当前行上的MYSQL计数子查询

时间:2014-03-22 21:59:33

标签: php mysql sql count subquery

我在查询时遇到问题,希望有人可以提供帮助。

  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 / row的所有行中有多少relpies(多少个thread = id)。

我希望这有道理:)

1 个答案:

答案 0 :(得分:2)

您需要在子查询中指定具有新别名的表,否则它将匹配具有来自同一表的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