首页 > 解决方案 > 如何从数据库连接表中查询并使用日期或范围之间?

问题描述

我的数据库中有两个表我想加入它们并在另一个表的日期之间或范围内使用我如何在 SQL 中执行此操作。

我的查询:

SELECT * 
FROM userdetails 
RIGHT JOIN returndocs on returndocs.EmailAddress = userdetails.EmailAddress 
WHERE DateSubmitted BETWEEN '2020-01-05' and '2020-02-10' 

我想通过过滤表中的信息来选择表中的所有数据并userdetails连接returndocs表中包含的信息。如果我使用此查询,它从表和表中返回的所有数据将为空。以下是查询的结果。DateSubmittedreturndocsreturndocsuserdetails

查询结果在这里

标签: mysqlsqldatabasejoin

解决方案


你 woudl 似乎想要一个LEFT JOIN开始userdetails

SELECT * 
FROM userdetails ud LEFT JOIN
     returndocs rd
     ON rd.EmailAddress = ud.EmailAddress AND
        rd.DateSubmitted BETWEEN '2020-01-05' AND '2020-02-10' ;

请注意,条件 onDateSubmitted需要在ON子句中。否则,WHERE将通过过滤掉不匹配的值将外连接更改为内连接。

我建议将datesubmitted条件写为:

SELECT * 
FROM userdetails ud LEFT JOIN
     returndocs rd
     ON rd.EmailAddress = ud.EmailAddress AND
        rd.DateSubmitted >= '2020-01-05' AND 
        rd.DateSubmitted < '2020-02-11' ;

即使DateSubmitted有时间组件,这也将起作用。


推荐阅读