假设我有一个包含两列的表,如下所示
Size | Time |
------------------
215 | 24868 |
------------------
105 | 25668 |
------------------
515 | 64848 |
------------------
321 | 44808 |
我需要选择Time
最接近传递值的Size
说X
。
从this answer我有以下查询(X= 800
)
SELECT * FROM my_table ORDER BY ABS(800-Size) LIMIT 1
此查询为我提供了大小为515的行,但我需要限制X
与所选值之间的差异。
例如:如果我传递800,那么它应该仅在大小介于750到850之间时返回,否则查询不应返回任何内容。
答案 0 :(得分:3)
我让它像这样工作
SELECT * FROM my_table where Size >= (800-val) and Size <= (800+val) ORDER BY ABS(800-Size) LIMIT 1
答案 1 :(得分:0)
SELECT * FROM my_table where size > (800-size) and size < (800+size)
试试这个。让我知道它是否有效。