gpt4 book ai didi

mysql - 查找重叠或冲突的时间间隔

转载 作者:行者123 更新时间:2023-11-30 01:31:12 26 4
gpt4 key购买 nike

您好,我对 mysql 查询(DQL)有疑问

表:

id| start | end   | day
-------------------------------
1 | 10:00 | 11:00 | 03-05-2013
2 | 11:00 | 12:00 | 03-05-2013
3 | 10:30 | 12:00 | 03-05-2013
4 | 13:00 | 14:00 | 03-05-2013
5 | 14:00 | 15:00 | 03-05-2013

因此,我只想获取(列:id、开始、结束)在开始和结束之间具有相同部分的行。所以结果我想得到:

id| start | end   
------------------
1 | 10:00 | 11:00
2 | 11:00 | 12:00
3 | 10:30 | 12:00

因为第 1 行和第 3 行在 10:30 到 11 之间的时间相同,而第 2,3 行在 11:00 到 12:00 之间的时间相同

我希望清楚我想要得到什么作为输出。很高兴能得到 DQL 语法 Doctrine 的答案。

最佳答案

您需要自连接表并查找对之间的冲突

SELECT 
t1.id,
t1.start,
t1.end
FROM table_name t1
JOIN table_name t2
WHERE
t1.start < t2.end AND
t2.start < t1.end AND
t1.id <> t2.id AND
t1.date = t2.date

您可以使用 SELECT DISTINCT 或 GROUP BY 来修剪输出中的重复项。

关于mysql - 查找重叠或冲突的时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17434678/

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