我在使以下查询正常工作时遇到了一些问题-在所有情况下,我似乎只获得了一小部分用户,而不是整个列表。
我有以下两个表:

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())

10-08 09:22