我有这个查询
SELECT E.employee_id FROM employee E
INNER JOIN timesheet T ON T.`employee_id` = E.`employee_id` AND DATE_FORMAT(T.`date_created`, '%Y-%m') != DATE_FORMAT(NOW(), '%Y-%m')
WHERE T.`employee_id` NOT IN (1,2)
实际上我只想让只有1,2中没有列出ID的员工,如果employee_id
或1
有2
,则月份和年份不应该是该特定员工的当前月份和年份
我不确定我是否采用了正确的方式。
答案 0 :(得分:1)
听起来好像您的条件之间需要or
关系,而不是and
关系。此外,最好保留join
条件以加入并在where
子句中包含所有“业务”逻辑 - 这使您的查询更易于阅读:
SELECT E.employee_id
FROM employee E
INNER JOIN timesheet T ON T.`employee_id` = E.`employee_id`
WHERE T.`employee_id` NOT IN (1,2) OR -- Note the "OR" relationship
DATE_FORMAT(T.`date_created`, '%Y-%m') !=
DATE_FORMAT(NOW(), '%Y-%m')
答案 1 :(得分:0)
试试这个
SELECT E.employee_id FROM employee E
INNER JOIN timesheet T ON T.`employee_id` = E.`employee_id`
WHERE T.`employee_id` NOT IN (1,2) OR (DATE_FORMAT(T.`date_created`, '%Y-%m') != DATE_FORMAT(NOW(), '%Y-%m'))