用于返回列之间的范围值的行的函数

时间:2015-07-06 10:15:39

标签: mysql sql numbers range

我有一个包含列,ID,A和B的表,其中我介绍了一些值

INSERT INTO test VALUES(1, 1, 6);
INSERT INTO test VALUES(2, 5, 8);
INSERT INTO test VALUES(3, 3, 4);
INSERT INTO test VALUES(4, 4, 5);

现在我正在寻找一个查询,告诉我传递给查询的数字范围是否在这些值之间。所以,如果我传递2和3(可能是N个数字),我希望看到第1行和第3行。

到目前为止,我唯一能做到的就是使用IN知道我的号码是否在该列中,但如果更高或更低则不行。

SELECT * FROM table WHERE A IN ('2', '3') 

我想我需要创建一个函数。有人可以指点我在正确的方向吗?

2 个答案:

答案 0 :(得分:1)

要查找范围包含指定数字的所有行:

SELECT *
FROM  test
WHERE (2 BETWEEN A AND B) 
   OR (3 BETWEEN A AND B)
/* OR (4 BETWEEN A AND B) */
/* OR (5 BETWEEN A AND B) */
+------+------+------+
| ID   | A    | B    |
+------+------+------+
|    1 |    1 |    6 |
|    3 |    3 |    4 |
+------+------+------+

另一种解决方案是JOIN您的表格及数字列表:

SELECT DISTINCT test.*
FROM test
INNER JOIN (
    SELECT 2 AS num UNION ALL
    SELECT 3 /* UNION ALL
    SELECT 4    UNION ALL
    SELECT 5 */
) AS num_list ON num_list.num BETWEEN test.A AND test.B

答案 1 :(得分:-2)

使用BETWEEN

  

SELECT * FROM table WHERE A BETWEEN 1 AND 3