gpt4 book ai didi

mysql - 尝试在 SQL 中连续显示前几天的记录

转载 作者:行者123 更新时间:2023-11-29 07:46:57 26 4
gpt4 key购买 nike

我试图显示我的 mysql 数据库中前三天的记录,但前提是这些记录连续存在多个。因此显示过去三天的所有记录,但前提是它们在这三天内相同

例如,在我的数据库中,我的记录如下所示:

+--------+-------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| ts | timestamp | NO | | CURRENT_TIMESTAMP | |
| server | varchar(15) | YES | | NULL | |
| status | varchar(30) | YES | | NULL | |
+--------+-------------+------+-----+-------------------+----------------+

所以,我的记录如下:

+----+---------------------+------------+----------+
| id | ts | server | status |
+----+---------------------+------------+----------+
| 1 | 2014-12-13 09:25:41 | test_host1 | new-file |
| 2 | 2014-12-14 09:25:41 | test_host1 | new-file |
| 3 | 2014-12-14 09:25:41 | test_host2 | new-file |
| 4 | 2014-12-15 09:25:41 | test_host1 | new-file |
| 5 | 2014-12-15 09:25:41 | test_host3 | new-file |
+-------+---------------------+----------+---------+
12799 rows in set (0.02 sec)

我编写了一个查询,它将显示过去三天,但它显示所有服务器:

select * from table WHERE ts > CURRENT_DATE - INTERVAL 3 DAY AND DATE(ts) <> DATE(NOW());

我只想要每天按顺序出现的服务器。所以我的伪代码是:

select * from table from the last three days where server has a record in all three days

我不想选择仅在某一天内显示的服务器。

有谁知道如何实现这个目标吗?我已经部分完成了,只需要最后一 block 的帮助。

谢谢。

最佳答案

使用聚合查找所有三天内出现的服务器:

select server
from table
where ts > CURRENT_DATE - INTERVAL 3 DAY AND DATE(ts) <> DATE(NOW())
group by server
having count(distinct date(ts)) = 3;

然后将这些重新加入以获得原始记录:

select t.*
from table t join
(select server
from table
where ts > CURRENT_DATE - INTERVAL 3 DAY AND DATE(ts) <> DATE(NOW())
group by server
having count(distinct date(ts)) = 3
) s
on t.server = s.server
where ts > CURRENT_DATE - INTERVAL 3 DAY AND DATE(ts) <> DATE(NOW());

关于mysql - 尝试在 SQL 中连续显示前几天的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27488152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com