一个表具有低和高列。这些列包含范围。现在,当这些列之间存在给定值时,我想检索记录:
Low High
0450 0459
0760 0765
0460 0467
0360 0369
我想检索记录'0464'
,'0365'
,'0466'
在高低之间的记录。
我必须检索它是否是一条记录 为
select *
from tablename
where '0465' between low and high
但是我想要多个值都一样
答案 0 :(得分:1)
您可以在WHERE
子句中使用OR
operator来连接多个条件。例如:
SELECT *
FROM Ranges
WHERE (0464 BETWEEN low AND high) OR (0365 BETWEEN low AND high) OR (0466 BETWEEN low AND high);
还可以定义将通过OR
运算符连接谓词的自定义SQL函数。该函数将使您简化查询语法。要定义自定义功能,请参阅数据库管理系统的文档。
另一种方法是构建范围和过滤器值的所有组合。假设您的数据库中有两个表。表Ranges
定义了范围的low
和high
,表Filter
包含了用于范围过滤的一组值。因此,以下查询返回包含Filter
表中的值的所有范围:
SELECT low, high
FROM Ranges, Filter
WHERE Filter.val BETWEEN Ranges.low AND Ranges.high;
注意,查询结果包含范围的重复项。如果需要获取唯一范围,请使用GROUP BY
子句或DISTINCT
运算符。
可以使用临时表,子查询或集合来代替Filter
表。
另请参阅live example。