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

MySQL中关联多表判断数字是否落在指定多组区间范围内的方法

MySQL 跨表校验数值是否落在指定区间方案

表结构说明

  • 待校验数值表(表名:num_table)
    • ID:关联ID,用于两张表匹配
    • Number:待校验的目标数值
  • 区间配置表(表名:range_table)
    • ID:关联ID,和num_table的ID字段对应
    • start_range:区间起始值
    • end_range:区间结束值

注意:如果你的区间表字段名是带空格的start Range、end Range,SQL中需要用反引号包裹字段名,即写为`start Range`、`end Range`避免语法报错。

实现查询语句

推荐使用EXISTS语法,性能优于关联后聚合的写法,只要匹配到任意符合要求的区间就会停止检索:

SELECT 
  n.Number,
  EXISTS (
    SELECT 1 FROM range_table r 
    WHERE r.ID = n.ID 
      AND n.Number BETWEEN r.start_range AND r.end_range
  ) AS is_in_range
FROM num_table n;

如果需要直接输出{数值} - true/false格式的结果,可以做一层格式转换:

SELECT 
  CONCAT(
    n.Number,
    ' - ',
    IF(EXISTS (
      SELECT 1 FROM range_table r 
      WHERE r.ID = n.ID 
        AND n.Number BETWEEN r.start_range AND r.end_range
    ), 'true', 'false')
  ) AS check_result
FROM num_table n;

补充说明:BETWEEN会同时包含区间的起始值和结束值,如果你的业务需求是左开右闭、左闭右开等其他逻辑,自行替换为n.Number > r.start_range AND n.Number < r.end_range对应写法即可。

示例输出

按照你给出的测试数据,查询结果如下:

check_result
192056 - true
143067 - false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:24:03