mysql - SQL如何统计表的每个字段

标签 mysql sql

我有 3 个表,分别是:

类(class)

  • courses_id
  • 姓名

QnAs

  • qna_id
  • student_id
  • courses_id
  • 姓名
  • 问题

学生

  • student_id
  • 姓名

现在我正在尝试计算每门类(class)有多少个 qna。我该如何进行查询?

我尝试过这样做:

SELECT (SELECT COUNT(qna_id) AS Expr1
              FROM    QnAs) AS Count
FROM   QnAs AS QnAs_1 CROSS JOIN
             Courses
GROUP BY Courses.courses_id

它确实会计算有多少个 QnA,但不会计算每个类(class)的 QnA

我得到的输出是每个类(class)名称和 QnAs 计数,但我想要的是每个类(class)的 QnA 编号

最佳答案

您似乎只想按类(class) ID 聚合 QNA:

select courses_id, count(*)
from qnas
group by courses_id
order by courses_id;

连同类(class)名称:

select c.course_id, c.name, coalesce(q.cnt, 0) as qna_count
from courses c
left join
(
  select courses_id, count(*) as cnt
  from qnas
  group by courses_id
) q on q.course_id = c.course_id
order by c.course_id;

关于mysql - SQL如何统计表的每个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54307621/

相关文章:

php - 从数据库获取数据的函数

mysql - 你怎么称呼 bool 表?

mysql - 从日期字段 mysql 中仅提取月份和日期

mysql - 自动生成代理项对要插入的许多行显示错误

JAVA SQL 将所有通配符分配为 null

php - 从表中选择列1、列2,其中值=某个值

php - foreach 中的 SQL 更新仅更新数字而不更新文本

sql - 是否可以在一个SQL查询中选择它?

MySQL:错误代码:1118 行大小太大(> 8126)。将某些列更改为 TEXT 或 BLOB

mysql - 按多个条目分组