我需要有关Mysql问题的帮助。我有一个这样的带有int间隔的表:
|name | start | end |
---------------------
| aaa | 1531 | 1540 |
| bbb | 1541 | 1550 |
| ccc | 1561 | 1580 |
如果用户说需要一个介于1531和1550之间的时间间隔,我应该返回true,因为它在表中可用。
无法使用此查询:
SELECT * FROM table WHERE start <= 1531 AND end >= 1550
我希望查询返回的是空值。这样用户可以在我的应用中使用间隔。
谢谢大家!
编辑: 我需要这样的退货:
| aaa | 1531 | 1540 |
| bbb | 1541 | 1550 |
或间隔匹配的计数器。
其他示例:
|name | start | end |
----------------------
| aa | 1 | 100 |
| bb | 101 | 200 |
| vv | 201 | 300 |
| dd | 1501 | 1600 |
| ff | 1601 | 1700 |
----------------------
我需要这个:
| XXX | 1 | 300 |
| YYY | 1501 | 1700 |
所以我可以在两者之间进行简单的搜索
或间隔计数器
答案 0 :(得分:0)
如果我们假设行从不相交,那么可以对重叠进行求和:
select (sum(1 + least(end, 1550) - greatest(start, 1531)) =
(1 + 1550 - 1531)
)
from t
where 1531 <= end and
1550 >= start;