我在使以下查询正常工作时遇到了一些问题-在所有情况下,我似乎只获得了一小部分用户,而不是整个列表。
我有以下两个表:
Users:
- UserId
- email
Updates:
- UserId
- Status
- LastUpdated
我要返回的是所有用户(来自Users)的列表,如果今天已更新(基于LastUpdated字段),则为他们的状态,否则为BLANK或NULL(如果今天未更新)。
我已经做到了这一点:
SELECT users.userid,
updates.status
FROM users
LEFT JOIN updates
ON users.userid = updates.userid
WHERE Date(lastupdated) = Date(Now())
最佳答案
如果日期是今天,则可以使用CASE
语句获取updates.status
:
SELECT users.userId,
CASE WHEN DATE(LastUpdated) = DATE(NOW()) THEN updates.status ELSE NULL END AS status
FROM users
LEFT JOIN updates ON users.userId=updates.userId
或者,更好的是,如果您不需要
updates
行中的其他任何内容,请执行以下操作:SELECT users.userId, updates.status
FROM users
LEFT JOIN updates ON users.userId=updates.userId
AND DATE(LastUpdated) = DATE(NOW())