Mysql SQL返回表1中的用户名,其中表2中没有匹配的用户

Mysql SQL返回表1中的用户名,其中表2中没有匹配的用户,mysql,join,left-join,Mysql,Join,Left Join,我有一张时间表,有几个人在用 users具有用户的用户名和id,这列在时间表中,时间表存储日期和用户id,用户id和id是链接,因此表2可能有一个新的每日条目 现在我要做的是收集一份名单,列出那些今天没有更新时间表的人。这是我的新手尝试 在users.id上选择*从用户左侧加入时间表= timesheet.user\u id,其中timesheet.user\u id为null,timesheet.value为空 是空的 这将返回所有没有时间表条目的用户,这是完美的,但我查询的是特定的一天,因此

我有一张时间表,有几个人在用

users具有用户的用户名和id,这列在时间表中,时间表存储日期和用户id,用户id和id是链接,因此表2可能有一个新的每日条目

现在我要做的是收集一份名单,列出那些今天没有更新时间表的人。这是我的新手尝试

在users.id上选择*从用户左侧加入时间表= timesheet.user\u id,其中timesheet.user\u id为null,timesheet.value为空 是空的

这将返回所有没有时间表条目的用户,这是完美的,但我查询的是特定的一天,因此如果他们昨天填写了,他们将在时间表中有相应的条目,但这仍然意味着他们今天没有填写

我试过了

在users.id上选择*从用户左侧加入时间表= timesheet.user\u id,其中timesheet.user\u id为null,timesheet.value为空 为null且timesheet.date!='12-09-05'


我可以看出这种逻辑的缺陷,我已经排除了那些我想按日期进一步筛选的人,但我无法了解如何得到我想要的结果。我真的希望它先按日期过滤,然后运行该查询,但我不知道该怎么做,因为我对MySQL不太熟悉,谷歌说他不知道答案

将日期条件移动到
ON
子句:

SELECT * FROM `users`
  LEFT JOIN `timesheet`
     ON `users`.`id`=`timesheet`.`user_id` AND `timesheet`.`date`=CURDATE()
  WHERE `timesheet`.`user_id` IS NULL AND `timesheet`.`value` IS NULL

如果我说当天没有提交时间表的用户不可能存在“时间表”行,对吗?