如何根据 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 中都是同一类?