1

我正在尝试创建一个查询,它将选择两个日期之间的所有日期
这是我的查询:

$query = "SELECT DISTINCT * FROM D1,D2
    WHERE D1.DATE_ADDED BETWEEN '$date1' AND '$date2' AND D1.D1_ID = D2.D2_ID";

问题是,它没有返回任何东西,但也没有产生错误

所以我尝试像这样直接将它输入到phpMyAdmin中

SELECT DISTINCT * FROM D1,D2
    WHERE D1.DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'
        AND D1.D1_ID = D2.D2_ID`

然后像这样

SELECT DISTINCT * FROM D1,D2
    WHERE D1.DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'

像这样

SELECT * FROM D1
    WHERE DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'

我只是得到

MySQL 返回一个空的结果集(即零行)。(查询耗时 0.0003 秒)

是的,我的表存在,列也存在 :)

4

3 回答 3

1

在第一种情况下,缺少结果可能是由于内部连接。要使结果在集合中,则需要两个表中的记录,即。除非 d2 在 d2_id 列中也有该 id,否则不会出现来自 d1 的记录。要解决此问题,如果这对您的业务逻辑是正确的,请使用left join.

但是,您的最后一个案例(没有连接)表明原因是第一个(左)表 d1 中缺少匹配的记录。

如果没有完整的数据集,我们无法进一步评论,因为您运行的所有代码都是完全有效的。

于 2011-06-08T11:34:42.783 回答
0

请实现以下代码

SELECT DISTINCT * FROM D1,D2
    WHERE D1.DATE_ADDED BETWEEN DATE_FORMAT('2011-01-01','%Y-%m-%d')
        AND DATE_FORMAT('2011-12-12','%Y-%m-%d')
        AND D1.D1_ID = D2.D2_ID`
于 2011-06-08T13:22:51.920 回答
0

如果您总是想选择一整年,那么像这样选择它会更容易:

SELECT * FROM D1 WHERE YEAR(DATE_ADDED) = 2011;

于 2011-06-08T11:31:21.917 回答