我有两个表:


employees

[id,名字,姓氏,状态]
absence

[id,employee_id,reason_type,date_from,date_to


我可以做类似的事情:

SELECT e.first_name, e.last_name, e.status, a.reason_type FROM employees e JOIN absence a ON e.id=a.employee_id
WHERE curdate() between date_from and date_to


但这只会给我在absence表中找到的那些雇员。

有没有一种方法可以获取所有雇员及其状态的列表(对于在absence表中匹配条件currdate() between date_from and date_to找到的雇员返回'是'和reason_type),对于其他人则说为reason_type为空。

谢谢。

最佳答案

您正在寻找left join,但是您必须注意where子句:

SELECT e.first_name, e.last_name, e.status, a.reason_type
FROM employees e LEFT JOIN
     absence a
     ON e.id = a.employee_id AND
        curdate() between a.date_from and a.date_to ;

关于mysql - MySQL选择-全部从左开始,仅匹配右表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39249428/

10-13 08:39