mysql - 如何过滤两列之间的一组数字?

标签 mysql sql

我有一个包含 minmax 列的表。我想搜索一组数字介于 minmax 之间的行。

示例:我有一组 (3, 4, 11, 18)

  1. 我的查询过滤可能如下所示:

    (3 between min and max) OR
    (4 between min and max) OR
    (11 between min and max) OR
    (18 between min and max)
    
  2. 但我想知道是否有更好的方法,例如:

    (3,4,11,12) between min and max
    

    这将类似于#1

我需要这个,因为集合可以在不同的搜索之间改变。感谢您提供任何帮助或建议。

更简单上下文中的表是类(classid、classname、minage、maxage)。有数以千计的类(class) - 所以我收到搜索具有特定年龄组的类(class)的网络请求,例如 (3,4,11,12),其中用户正在搜索 3、4、11 和 12 岁的类(class)。

目前我的查询看起来是: select * from class where ((3 between min and max) OR (4 between min and max) OR (11 between min and max) OR (18 between min and max))

最佳答案

有点像

SELECT * 
  FROM MyTable AS T
 WHERE EXISTS (
               SELECT *
                 FROM MySet AS S
                WHERE S.val BETWEEN T.my_min AND T.my_max
              );

关于mysql - 如何过滤两列之间的一组数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8727875/

相关文章:

java - HashMap 中的 MyBatis 参数

php - MYSQL 使用变量更新多列

php - 无法在数据库中插入必填字段

在 'SET' 中使用 `LOAD DATA LOCAL INFILE` 关键字作为 blob 列时,Mysql 出现错误 1064

mysql - 如何获取mysql中不同条目的总和

sql - 如何对版本号进行排序,例如 ‘A’ 、 ‘B’ 、 ‘AA’ 、 ‘AB’ 和 ‘AAA’ ?

sql - 您可以从 SQL Server 2008 查询调用 WCF 服务吗?

php - 如何从数据库中获取数据并创建动态选择?

sql - 这个查找(关联)表是否正确? (多对多关系)

mysql - MYSQL 表中的排序规则错误