MySQL:LEFT JOIN 未按预期工作

Avi*_*ash 5 mysql join

我有 2 个表:员工,出勤率 在此处输入图片说明

当我使用 LEFT JOIN 查询时

SELECT employees.eno,employees.name,employees.dept,attendanceIn.attIn FROM `employees` 
LEFT JOIN attendanceIn ON employees.eno = attendanceIn.eno
WHERE date(attIn) like '2016-07-02%'
Run Code Online (Sandbox Code Playgroud)

我得到的是,

实际结果

  • 我的查询有什么问题?
  • 我如何得到我的预期结果?

ype*_*eᵀᴹ 12

WHERE date(attIn) like '2016-07-02%'被转换LEFT连接到INNER一起。条件应移至ON子句。

还:

  • LIKE用于日期比较不是一个好习惯
  • date()在比较之前在列上使用函数(如)会使索引无用。最好使条件sargable

查询更正:

SELECT e.eno, e.name, e.dept, a.attIn 
FROM employees AS e 
  LEFT JOIN attendanceIn AS a 
    ON  e.eno = a.eno
    AND a.attIn >= '2016-07-02'
    AND a.attIn  < '2016-07-03' ;
Run Code Online (Sandbox Code Playgroud)

SQLfiddle测试。