也许是因为今天是星期五,我只是想的没那么直,但是我希望(并且正在尝试得到)以下查询输出所有用户,NULL如果没有时间表,则在EndDate列中使用。相反,我只会得到具有时间表的用户。
SELECT Users.Name, Timesheets.EndDate
FROM Users
LEFT OUTER JOIN
Timesheets ON Users.idUser = Timesheets.id_User
WHERE (Timesheets.EndDate = CONVERT(DATETIME, '2014-08-15 00:00:00', 102))
Run Code Online (Sandbox Code Playgroud)
最终目标是找到在给定时间内尚未创建时间表的所有用户。
将条件从WHERE条款移至ON条款,
ON Users.idUser = Timesheets.id_User
AND Timesheets.EndDate = CONVERT(DATETIME, '2014-08-15 00:00:00', 102)
Run Code Online (Sandbox Code Playgroud)
该ON子句在联接表之前过滤行。WHERE另一方面,该子句在连接表之后过滤掉行。既然你把对的条件WHERE从句,Timesheets.EndDate用NULL值被排除在外。