【发布时间】:2014-03-02 13:43:56
【问题描述】:
所以我基本上有一张桌子,每个房间每天都有一个条目。我需要找到按该房间、属性和注释分组的所有连续日期的开始和结束日期。
property room date notes
----------------------------------------------
2 101 2013-01-01 abc
2 101 2013-01-02 abc
2 101 2013-01-03 abc
2 101 2013-01-04 abc
2 101 2013-01-05 xyz
2 101 2013-01-06 xyz
2 101 2013-01-15 abc
2 101 2013-01-16 abc
2 101 2013-01-17 abc
2 107 2013-01-02 def
2 107 2013-01-03 def
2 109 2013-01-01 abc
2 109 2013-01-02 abc
3 101 2012-12-31 abc
3 101 2013-01-01 abc
3 101 2013-01-02 abc
我需要能够根据属性和日期查询它。当我按日期搜索时,我应该能够使用序列的“开始日期”之后的日期,并且仍然可以找到正确的开始日期。因此,如果我搜索说 WHERE date = '2013-01-02' 我应该返回类似:
property room start_date end_date notes
----------------------------------------------------
2 101 2013-01-01 2013-01-04 abc
2 107 2013-01-02 2013-01-03 def
2 109 2013-01-01 2013-01-02 abc
3 101 2012-12-31 2013-01-02 abc
这将用于一个相当大的表并返回数十万个结果,因此效率是首要考虑因素。我发现并尝试应用一些有问题的示例。大多数都太慢了,或者如果它在 WHERE 日期子句之前就不会返回正确的开始日期等。
我们将不胜感激。
谢谢!
【问题讨论】:
-
考虑提供适当的 DDL(和/或 sqlfiddle)以及所需的结果集
-
分析大型“临时”数据集并不是 MySQL 的主要优势,我怀疑您不会轻易获得所需的性能。表格中没有其他可以提供帮助的信息,例如唯一的预订 ID?