我的 sql 查询可能有什么问题,我想从两个满足 WHERE 条件的表中检索数据
SELECT *, UNIX_TIMESTAMP(i.sent_date) AS udate
FROM ibc_sent_history as i INNER JOIN
ibc_messages as u
ON i.msg_ids = u.id
WHERE (i.sent_date >= '02-02-2013' AND i.sent_date <= '02-02-2014')
ORDER BY i.sent_date
LIMIT 200
最佳答案
假设您的 ibc_sent_history.sent_date
数据类型是 DATETIME,这里有一种重构此查询的方法。 (即使数据类型是 DATE,这也将起作用)。您需要将日期输入字符串格式从 02-02-2013
更改为更标准的“2014-02-02”(YYYY-MM-DD)。
SELECT whatever, whatever
FROM ibc_sent_history AS i
INNER JOIN ibc_messages AS u ON i.msg_ids = u.id
WHERE i.sent_date >= '2013-02-02'
AND i.sent_date < '2014-02-02' + INTERVAL 1 DAY
ORDER BY i.sent_date DESC
LIMIT 200
我更改了 ORDER BY 以包含 DESC。这是为了返回最新的项目,而不是最旧的项目。如果这不是您所需要的,请取下 DESC。
我更改了日期格式。
我将您的选择范围的末尾更改为
i.sent_date < '2014-02-02` + INTERVAL 1 DAY
那是因为
i.sent_date <= '2014-02-02`
将包括 2014 年 2 月 2 日午夜恰好发生的项目,但不包括当天的任何其他项目。您可能想要的是发生在第二天午夜之前但不包括第二天午夜的项目。
关于mysql - 我的 join sql 查询不会带来结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21536852/