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

SQL Server如何查询与指定地质编码区间重合的样本区间

区间重叠查询修正方案

判断两个闭区间 [a1, a2]、[b1, b2] 存在重叠的通用条件非常简单,只需要满足:

a1 <= b2 AND b1 <= a2
如果业务规则里端点重合不算重叠,把 <= 替换为 < 即可。

原有查询的问题

你之前的判断条件只覆盖了端点相等、完全包含两种场景,漏掉了交叉部分重叠的情况,比如编码区间是[2,6],样本区间是[3,9],既没有端点相等,也没有互相包含,但明显存在重叠段[3,6],就会被原有条件漏掉。

修正后的查询语句

SELECT * FROM codes 
INNER JOIN samples ON codes.hole_id = samples.hole_id
WHERE codes.code = 'VBv' 
AND samples.depth_from <= codes.depth_to
AND codes.depth_from <= samples.depth_to;

逻辑验证

拿你给出的示例数据测试:

  • 编码VBv的区间是[2,6]
  • 样本OP0051780的区间是[1,3]:1<=6、2<=3,满足条件,重叠段为[2,3]
  • 样本OP0051781的区间是[3,9]:3<=6、2<=9,满足条件,重叠段为[3,6]

两个样本都会被正确查询到,覆盖所有重叠场景。如果需要额外返回重叠的长度,可以扩展SELECT字段:

SELECT *, 
  LEAST(codes.depth_to, samples.depth_to) - GREATEST(codes.depth_from, samples.depth_from) AS overlap_length
FROM codes 
INNER JOIN samples ON codes.hole_id = samples.hole_id
WHERE codes.code = 'VBv' 
AND samples.depth_from <= codes.depth_to
AND codes.depth_from <= samples.depth_to;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:18:02