php - MYSQL对当前行计数子查询

标签 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/行的所有行中有多少个 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/

相关文章:

php - PHP 中每个用户请求的临时链接

Mysql2::Error:排序内存不足,考虑使用 docker-compose.yml 增加服务器排序缓冲区大小

sql - 具有联合和限制的 knex 子查询

mysql - 获取每月摘要

sql - django 查询集按小时、分钟和秒排序

javascript - 使用 mysql 获取结果构建 json

php - MySQL UPDATE - 选择性更新

php - Facebook Graph 搜索结果与 "Public Posts"结果不匹配?

MySQL Count(Distinct) 返回一个值

mysql - 精确词搜索中的单词灵活性