我怎样才能 select SQL 中最接近的值,但只有当该值更大时?
How can I select the closest value in SQL,but only when that value is bigger?
我有以下 table 和一些数据:
+----+--------+--------+--------+-------+
| id | length | weight | height | width |
+----+--------+--------+--------+-------+
| 1 | 10 | 45 | 80 | 20 |
+----+--------+--------+--------+-------+
| 2 | 30 | 55 | 70 | 32 |
+----+--------+--------+--------+-------+
| 3 | 30 | 65 | 80 | 21 |
+----+--------+--------+--------+-------+
我想要 select 最接近长度和高度的值,但它必须大于我指定的值。例如,如果我在输入中写:
1)Length=20 and height=68 it should return id=2
2)Length=20 and height=71 it should return id=3
我试过这个(例如第一种情况),但出现语法错误:
SELECT TOP 1 * FROM `elements` ORDER BY length-20 AND height-68
我该怎么做?
使用 WHERE
子句仅 return 具有 "bigger" 值的行。
SELECT *
FROM `elements`
where Length >= 20 and height >= 68
ORDER BY length + height
LIMIT 1
ORDER BY
将首先对长度 + 高度较小的行进行排序。使用LIMIT 1
选择最小的。
使用 where
:
SELECT TOP (1) e.*
FROM elements e
WHERE length >= 20 AND height >= 20
ORDER BY length * height;
您没有说明 "closeness" 是什么意思。这使用了总面积。
例如 length
是 height
两倍重要的版本。
SELECT TOP 1 *
FROM myTable
where Length >= 20 and height >= 68
ORDER BY 2*(length-20) + (height-68)
我不知道为什么,但 'TOP 1' 对我不起作用。我终于解决了这个问题
SELECT * FROM `elements`
WHERE Length >= 20 and height >= 68
ORDER BY length + height
LIMIT 1
我有以下 table 和一些数据:
+----+--------+--------+--------+-------+
| id | length | weight | height | width |
+----+--------+--------+--------+-------+
| 1 | 10 | 45 | 80 | 20 |
+----+--------+--------+--------+-------+
| 2 | 30 | 55 | 70 | 32 |
+----+--------+--------+--------+-------+
| 3 | 30 | 65 | 80 | 21 |
+----+--------+--------+--------+-------+
我想要 select 最接近长度和高度的值,但它必须大于我指定的值。例如,如果我在输入中写:
1)Length=20 and height=68 it should return id=2
2)Length=20 and height=71 it should return id=3
我试过这个(例如第一种情况),但出现语法错误:
SELECT TOP 1 * FROM `elements` ORDER BY length-20 AND height-68
我该怎么做?
使用 WHERE
子句仅 return 具有 "bigger" 值的行。
SELECT *
FROM `elements`
where Length >= 20 and height >= 68
ORDER BY length + height
LIMIT 1
ORDER BY
将首先对长度 + 高度较小的行进行排序。使用LIMIT 1
选择最小的。
使用 where
:
SELECT TOP (1) e.*
FROM elements e
WHERE length >= 20 AND height >= 20
ORDER BY length * height;
您没有说明 "closeness" 是什么意思。这使用了总面积。
例如 length
是 height
两倍重要的版本。
SELECT TOP 1 *
FROM myTable
where Length >= 20 and height >= 68
ORDER BY 2*(length-20) + (height-68)
我不知道为什么,但 'TOP 1' 对我不起作用。我终于解决了这个问题
SELECT * FROM `elements`
WHERE Length >= 20 and height >= 68
ORDER BY length + height
LIMIT 1