LEFT加入查询问题

Sho*_*lMe 5 mysql sql

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

Users:

 - UserId
 - email

Updates:

 - UserId 
 - Status
 - LastUpdated
Run Code Online (Sandbox Code Playgroud)

我想要返回的是所有用户(来自用户)的列表,如果它今天更新的状态(基于LastUpdated字段),否则为BLANK,如果今天没有更新则为NULL.

我已经达到了这个目的:

SELECT users.userid, 
       updates.status 
FROM   users 
       LEFT JOIN updates 
              ON users.userid = updates.userid 
WHERE  Date(lastupdated) = Date(Now()) 
Run Code Online (Sandbox Code Playgroud)

lc.*_*lc. 5

您可以使用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
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,如果您不需要该updates行中的任何其他内容,请执行以下操作:

SELECT users.userId, updates.status
FROM users 
LEFT JOIN updates ON users.userId=updates.userId
    AND DATE(LastUpdated) = DATE(NOW()) 
Run Code Online (Sandbox Code Playgroud)