首页  >  问答  >  正文

使用where子句过滤空字段的SQL左连接

<p>我有两个表,一个是用户表(Users table),一个是令牌表(Token table)。我想要将这两个表连接起来,查看哪些用户已验证了他们的令牌,哪些没有。令牌表中有一个包含用户ID的外键。</p> <p>现在我正在使用左连接(left join)来连接用户ID,并尝试检查是否没有验证。查询语句如下:</p> <pre class="brush:php;toolbar:false;">SELECT name, verified FROM users LEFT JOIN tokens ON users.ID = tokens.UID WHERE verified = false</pre> <p>假设我有以下两个表:</p> <pre class="brush:php;toolbar:false;">ID | Name 0 | Joe 1 | Sally 2 | Dave 3 | John</pre> <p>然后,令牌表如下:</p> <pre class="brush:php;toolbar:false;">ID | UID | Verifed 0 | 1 | 0 1 | 2 | 0 2 | 3 | 1</pre> <p>如你所见,Joe在第二个表中没有记录。我希望将这两个表连接起来,即使Joe在第二个表中没有记录,也希望将其视为false/null。当我运行查询以查找未验证的用户时,只会返回2个条目的数据。</p> <pre class="brush:php;toolbar:false;">Name | Verified Sally | 0 Dave | 0</pre> <p>如果我去掉where子句,结果会是以下这样:</p> <pre class="brush:php;toolbar:false;">Name | Verified Sally | 0 Dave | 0 John | 1 Joe | NULL</pre> <p>如你所见,Joe在底部具有一个null值,但我希望将其视为未验证。我应该如何编写查询语句以获得以下数据:</p> <pre class="brush:php;toolbar:false;">Name | Verified Sally | 0 Dave | 0 Joe | NULL</pre> <p>或者只需以下查询语句,结果为3。当前的查询结果为2。</p> <pre class="brush:php;toolbar:false;">SELECT count(*) FROM users LEFT JOIN tokens ON users.ID = tokens.UID WHERE verified = false</pre> <p><br /></p>
P粉511985082P粉511985082433 天前503

全部回复(1)我来回复

  • P粉322106755

    P粉3221067552023-08-14 13:23:45

    雷雷

    回复
    0
  • 取消回复