MySQL - 修改查询(NOT NULL)

标签 mysql sql aggregate-functions

我正在尝试编写命令来检索我的数据库中已经设置好的部分

我需要生成一个 teacher_id 的列表,其中包含每位教师一天的课时数。

我正在使用

SELECT teacher_id, COUNT(lesson_time)
FROM lessons
WHERE lesson_time > 0
GROUP BY teacher_id;

此语句检索所有教师 ID 并显示他们每个人有多少节课,但是,我希望该语句也包括有 0 节课的老师。

lesson_time 设置为 NOT NULL,因此我推测必须在教师有 0 节课的单元格中写入 0。

teacher_id 在“Teachers”表中

最佳答案

你可以使用 SELF JOIN

SELECT
  p.people_id,
  p.first_name,
  IFNULL(COUNT(l.lesson_time),0) AS LessonCount
FROM people AS p
  LEFT JOIN lessons AS l
    ON t.people_id = l.teacher_id
GROUP by p.people_id

这是修改后的查询,它将从教师表中获取所有教师,然后加入类(class)表以进行计数。如果任何计数不可用,它将显示 0。

关于MySQL - 修改查询(NOT NULL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15325209/

相关文章:

c# - 我想从另一个表列中插入值

delphi - 聚合 TClientDataset 中的计算字段

mysql - 选择填充数据的列中的所有唯一电子邮件

c# - 循环读取 XML 文件

mysql - 索引大型 mysql 表的最佳方法是什么?

postgresql - 在循环中通过键从 jsonb 数组中删除属性

sql - 新手问题: N-N join that matches ALL a list

mysql - 使用 MySQL 的 Meteor 帐户

mysql - 连接类别和子类别

sql - 如何在 Crystal 报表中使用多个存储过程?