我有一个包含列,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')
我想我需要创建一个函数。有人可以指点我在正确的方向吗?
答案 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