mysql - 具有当前月份条件的空条件

标签 mysql sql date join left-join

我正在尝试运行一个 mysql 选择查询,我想在其中获取当月未支付费用的学生。如果我一个一个地使用它们,请检查我的情况,但它们同时不起作用

"SELECT A.studentid,A.stu_first_name,A.stu_last_name,
 A.stu_reg_no,A.phone,
 B.submit_on,
 C.class_name FROM students as A 
 LEFT JOIN student_fee as B on A.studentid = B.student_id 
 inner join class as C on 
 A.class_id=C.classid 
 WHERE MONTH(B.submit_on) = MONTH(NOW()) 
 AND B.student_id IS NULL"

最佳答案

您需要将 B.submit_on 的条件从 WHERE 子句移动到表 B< 上的 LEFT JOIN/。否则, B 中没有匹配项的记录将被 WHERE 子句过滤掉,我认为这与您想要的相反(这实际上将您的 LEFT JOININNER JOIN)。

SELECT 
    A.studentid,
    A.stu_first_name,
    A.stu_last_name,
    A.stu_reg_no,
    A.phone,
    B.submit_on,
    C.class_name
FROM 
    students as A 
    LEFT JOIN student_fee as B on A.studentid = B.student_id AND MONTH(B.submit_on) = MONTH(NOW()) 
    INNER JOIN class as C ON A.class_id = C.classid 
WHERE B.student_id IS NULL"

关于mysql - 具有当前月份条件的空条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54202323/

相关文章:

c# - 访问 DBSet 时出现 NullReferenceException。使用 MySQL、EF6

sql - NULL 的结果!= SQL 查询中的值(postgres 和 rails3)

sql - 如何在 Microsoft Visual FoxPro 9 中执行自定义函数?

mysql - Codeigniter 连接多个表并求和

mysql - 如何合并两个查询以使结果如图所示?

Mysql通过存储过程恢复数据库

sql - 在 SQL Server Management Studio 2005 中禁用 "save"提示

java sql 日期时间

entity-framework - Entity Framework 日期时间与 SQL Server 日期

date - 如何在Hive中将ISO日期转换为UTC日期