也许是因为它是星期五,而我只是没有直接思考,但我希望(并且我试图获得)以下查询输出所有用户,{{ 1}}在EndDate列中,如果没有时间表。相反,我只是让用户拥有时间表。
NULL
最终目标是找到尚未在给定时间内创建时间表的所有用户。
答案 0 :(得分:4)
将WHERE
子句上的条件移至ON
子句
ON Users.idUser = Timesheets.id_User
AND Timesheets.EndDate = CONVERT(DATETIME, '2014-08-15 00:00:00', 102)
ON
子句在加入表之前过滤行。另一方面,WHERE
子句在表连接后过滤掉行。由于您将条件放在WHERE
子句上,Timesheets.EndDate
的 NULL 值将被排除。
答案 1 :(得分:2)
您的WHERE
子句会过滤掉空值,因为如果没有时间表,Timesheets.EndDate
为NULL
。
尝试添加NULL测试:
SELECT Users.Name, Timesheets.EndDate
FROM Users LEFT OUTER JOIN
Timesheets ON Users.idUser = Timesheets.id_User
WHERE Timesheets.EndDate IS NULL
OR (Timesheets.EndDate = CONVERT(DATETIME, '2014-08-15 00:00:00', 102))