mysql - 如何从数据库连接表中查询并使用日期或范围之间?
问题描述
我的数据库中有两个表我想加入它们并在另一个表的日期之间或范围内使用我如何在 SQL 中执行此操作。
我的查询:
SELECT *
FROM userdetails
RIGHT JOIN returndocs on returndocs.EmailAddress = userdetails.EmailAddress
WHERE DateSubmitted BETWEEN '2020-01-05' and '2020-02-10'
我想通过过滤表中的信息来选择表中的所有数据并userdetails
连接returndocs
表中包含的信息。如果我使用此查询,它从表和表中返回的所有数据将为空。以下是查询的结果。DateSubmitted
returndocs
returndocs
userdetails
解决方案
你 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
有时间组件,这也将起作用。