函数到 return 行以获取列之间的范围值

Function to return rows for a range values between columns

我有一个包含列、ID、A 和 B 的 table,我在其中引入了一些值

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') 

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

使用 BETWEEN

SELECT * FROM table WHERE A BETWEEN 1 AND 3

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

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 您的 table 和数字列表:

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