mysql - 我的 join sql 查询不会带来结果

标签 mysql sql inner-join

我的 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/

相关文章:

php - 安全下载文件

PHP随机行帮助

python - 如何高效地将数据从 R 上传到 SQL 数据库(Snowflake)?

mysql - SQL 2内部加入其他数据结果

MySQL Left Join 不显示其他表中的行

MySQL 插入竞争条件

php - 为什么 num_rows 不返回任何值?

php - ORDER BY 日期排序仅使用天和月mysql

sql - 如何在 SQL Server 和 Oracle SQL 中基于固定字符选择直到第 N 个空格的子字符串

mysql - SQL 更新、比较和外键