【问题标题】:MYSQL count subquery on current row当前行的MYSQL计数子查询
【发布时间】:2014-03-22 21:59:32
【问题描述】:

我在处理这个查询时遇到了问题,希望有人能提供帮助。

  SELECT 
    myTable.id,
    myTable.subject,
    myTable.upvotes,
    myTable.downvotes,
    (SELECT COUNT(id) 
     FROM myTable 
     WHERE myTable.thread = myTable.id) AS comments_count 
  FROM myTable

基本上我有一个带有帖子和 cmets 的表, cmets 线程与原始帖子的 id 相关联。在我的查询中,我想显示当前 id/行的所有行中有多少 relpies(多少线程 = id)。

我希望这是有道理的:)

【问题讨论】:

    标签: php mysql sql count subquery


    【解决方案1】:

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

    【讨论】:

    • 啊,谢谢!这很有意义。我应该使用别名。我也会尝试左连接。再次感谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2014-08-02
    • 2019-02-20
    相关资源
    最近更新 更多