如何选择最后7天可用-MySql
我在处理MySQL中的数据时遇到问题。如何从pasty seven可用数据中选择所有数据 我试着跑如何选择最后7天可用-MySql,mysql,sql,datetime,Mysql,Sql,Datetime,我在处理MySQL中的数据时遇到问题。如何从pasty seven可用数据中选择所有数据 我试着跑 SELECT * FROM database where ship_day BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW(); SELECT * FROM database where ship_day BETWEEN DATE_SUB(MAX(ship_day), INTERVAL 7 DAY) AND MAX(ship_day); 但我
SELECT * FROM database where ship_day
BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW();
SELECT * FROM database where ship_day
BETWEEN DATE_SUB(MAX(ship_day), INTERVAL 7 DAY) AND MAX(ship_day);
但我不是为了我的目的而工作。
假设我们在1月9日,我的MAX(ship_day)
是1月7日,我想从过去7个可用数据中提取数据,从1月1日到7日
我试着跑
SELECT * FROM database where ship_day
BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW();
SELECT * FROM database where ship_day
BETWEEN DATE_SUB(MAX(ship_day), INTERVAL 7 DAY) AND MAX(ship_day);
但我犯了个错误
我知道我可以将
间隔7天
增加到间隔9天
,但我希望这个过程是自动的。我该怎么解决呢?好吧,这里有一种方法:
SELECT d.*
FROM database d
WHERE d.ship_day >= COALESCE( (SELECT DISTINCT d2.ship_day
FROM database d2
ORDER BY d2.ship_day DESC
LIMIT 1 OFFSET 6
), d.ship_day
);
注意:如果您每发货日只有一行
,则只需使用限制
:
SELECT d.*
FROM database d
ORDER BY d.ship_day DESC
LIMIT 7
假设我们是在1月9日,我的最大发货日是1月7日
我想从过去7个可用数据中提取数据,从1月份开始
一号到七号
我假设您正在寻找下面的查询,但如果没有示例数据和预期结果,很难确定
SELECT
*
FROM
t
WHERE
ship_day >= (
SELECT
MAX(ship_day) - INTERVAL 7 DAY
FROM
t
)
或者你也可以这样写
SELECT
*
FROM
t
WHERE
ship_day >= (
SELECT
MAX(ship_day)
FROM
t
) - INTERVAL 7 DAY
您可以通过以下方式获取数据的最后日期:
select MAX(ship_day) FROM database
所以像这样使用它:
SELECT * FROM database
where ship_day >= DATE_SUB((select MAX(ship_day) FROM database), INTERVAL 7 DAY)
有关提供示例数据和预期结果的信息,请参见“工作正常!但gordon linoff提供的更快”Yes@Lucaferario这很可能需要扫描整个表数据或索引数据,以获得正确的内部查询。。但我假设发货日
列在您的表中被索引了?