mysql - 返回列之间范围值的行的函数

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

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

最佳答案

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

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/

相关文章:

php - 在 SQL 中有效但在 PHP 中无效的查询

C++如何将函数连接到程序?

c++ - C++ 中的超长类型,我可以为大型计算创建自己的超长类型吗?

mysql:主键的重复项

sql - 联接后的SQL删除重复的行

php - 更新并从数据库表中选择

sql - pl/pgsql 函数中动态 SQL 的语法错误

javascript - 将 Number.MAX_SAFE_INTEGER 与 Math.random() 相乘时,我是否可能会丢失任何十进制数字(精度)?

php - 使用 php 将图像上传到磁盘并在 mysql 数据库中保存图像名称

mysql查询在几行上查找满足条件的id