我正在尝试运行一个 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 JOIN
到 INNER 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/