You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL查询获取与指定值区间存在重叠的表记录?

问题分析

你之前的两种写法漏了记录区间完全包含查询区间的场景:sno=4的区间是[2001,2010],整个覆盖了目标查询区间[2002,2004],所以没有被匹配到。

  • 第一种写法仅判断记录的起始或结束值落在查询区间内,无法匹配到起止值都在查询区间外、但整体包住查询区间的记录
  • 第二种写法要求记录的整个区间完全落在查询区间内,也会漏掉大范围覆盖目标区间的记录
区间重叠判断逻辑

如果要匹配所有和[2002,2004]存在交集的记录,通用判断条件为:
记录的起始值 ≤ 查询区间的结束值 且 记录的结束值 ≥ 查询区间的起始值
对应到你的场景就是 fromvalue <= 2004 AND tovalue >= 2002

正确SQL语句
SELECT * 
FROM demo4 
WHERE fromvalue <= 2004 
  AND tovalue >= 2002;
验证结果

执行上述语句后返回的行如下:

snofromvaluetovalue
120022002
220032003
320042004
420012010

完全符合需求。

内容的提问来源于stack exchange,提问作者user11840889

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:15:03