我有一个包含列、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')
我想我需要创建一个函数。有人可以在这里为我指明正确的方向吗?
最佳答案
查找范围包含指定数字的所有行:
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
关于mysql - 返回列之间范围值的行的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31243225/