gpt4 book ai didi

mysql - 最孤立的记录

转载 作者:行者123 更新时间:2023-11-29 01:43:43 25 4
gpt4 key购买 nike

考虑一个带有 datetime 字段的 MySQL 表。我想选择与下一个或上一个 datetime 值之间的时间最远的行。例如,如果存在具有以下值的记录:

1   2012-10-17 12:00
2 2012-10-16 12:00
3 2012-10-14 12:00
4 2012-10-08 12:00
5 2012-10-03 12:00
6 2012-10-01 12:00

因此,最“孤立”的记录是记录 #4,因为它与最近的记录相距 5 天。

请注意,对于“最孤立的”,可能存在也可能不存在联系,在这种情况下,可能会返回任何联系行,也可能会返回所有联系行。此外,虽然该示例显示的记录具有按顺序排列的 datetime 值,但在实际数据集中可能不一定如此。

最佳答案

如果您的表定义为 foo (id, time) 您可以使用以下 sql:

SELECT t1.id FROM foo t2
INNER JOIN foo t1 ON t1.id=t2.id+1
INNER JOIN foo t3 ON t3.id=t1.id+1
WHERE timestampdiff(day,t1.time,t2.time)+timestampdiff(day,t3.time,t1.time)=
(SELECT max(timestampdiff(day,t1.time,t2.time)+timestampdiff(day,t3.time,t1.time))
FROM foo t2 INNER JOIN foo t1 ON t1.id=t2.id+1
INNER JOIN foo t3 ON t3.id=t1.id+1)

获取所有“最孤立”的条目。如果您只需要一个条目,您可以随时添加一个limit 1
另请注意,这里我们假设条目按时间戳排序。如果条目没有按时间排序,您可以创建一个 View 来对它们进行排序。

sqlfiddle

关于mysql - 最孤立的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12944381/

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