mysql |从表中选择记录,其中月份和年份不是当前或员工ID

时间:2014-12-20 09:30:59

标签: mysql sql database select

我有这个查询

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_id12,则月份和年份不应该是该特定员工的当前月份和年份

SQL Fiddle

我不确定我是否采用了正确的方式。

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'))