我有两个表: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/