我怎样才能 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" 是什么意思。这使用了总面积。

例如 lengthheight 两倍重要的版本。

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