如何根据 3 个不同的列在 mysql 中选择行

Posted

技术标签:

【中文标题】如何根据 3 个不同的列在 mysql 中选择行【英文标题】:how to select row in mysql on basis of 3 different column 【发布时间】:2016-02-05 04:07:30 【问题描述】:

我有一个包含报告的表格,我想选择过去 7 天的数据。因此,在下图中,您可以看到 3 列日月年。

选择过去 7 天的 sql 查询是什么。

【问题讨论】:

过去 7 天是关于 哪个 日期的?你的问题我不清楚。 试试这个***.com/questions/27599557/… 为什么要这样存储您的日期,而不是简单地在一列中存储日期类型? @ankit-pundir 您应该将日期存储在单列中 我想将数据存储在单列中,但由于性能原因,我尝试单独存储。我在一个月内可能有 100 万行,并且每个月都在成长。所以campare字符串比比较数字慢。这就是 Facebook 以数字格式存储其用户 ID 的原因。 【参考方案1】:

试试这样的,

    SELECT 
            *    
    FROM 
            < your_table > 
    WHERE 
            STR_TO_DATE(CONCAT(`day`, ',', `month`, ',' ,`year`), '%e,%m,%y') 
            BETWEEN 
            DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE(); 

如果你想使用同一张表中的最新日期,

尝试使用查询单独获取最大日期,

SELECT MAX(STR_TO_DATE(CONCAT(`day`, ',', `month`, ',' ,`year`), '%e,%m,%y')) AS maxdat FROM < your_table > 

存储它,并在主查询中代替 CURDATE() 使用它,

或者,

如果您没有任何性能问题,您可以使用与子查询相同的查询。

【讨论】:

【参考方案2】:

您希望最近 7 天进入的依据。

试试这个找出 7 天之前的日期:

WHERE t.date >= DATE_ADD(CURDATE(), INTERVAL -7 DAY);

WHERE t.date >= DATE(NOW()) - INTERVAL 7 DAY

或者您可以查看Date_doc 文档。

【讨论】:

根据此数据过去 7 天。不是最后 7 个条目。 使用上面的命令,即使你不会得到完美的条目然后通过那个日期文档

以上是关于如何根据 3 个不同的列在 mysql 中选择行的主要内容,如果未能解决你的问题,请参考以下文章

如何拥有一个包含数千个表的数据库,这些表具有不同数量的列,这些列在 Django / SQLAlchemy ORM 中都是同一类?

根据 Python 函数输出指定的列在 Google BigQuery 上进行查询

如何选择列并为不存在的列生成 Nan 值?

如何根据列在火花中重新分区?

求助excel单元格不同自动添加3个空白行

如何定义一个函数来根据多个条件汇总和选择数据?