如果我有一张类似
的桌子ID VALUE
1 1000
2 1500
3 2000
我要选择value='1999'
它会返回第3行。如果我选择1200
,它将返回第1行。我怎么在PHP中做到这一点?
答案 0 :(得分:4)
这是一个很好的问题:)
SELECT VALUE FROM mytable ORDER BY ABS(VALUE-1999) LIMIT 1
当然,1999年将是真实的变量。
<强> Fiddle 强>
答案 1 :(得分:1)
select id, value, ABS(1999 - value) as delta
from YOUR_TABLE
order by delta
LIMIT 1
这将计算您的请求与表格中的所有数据之间的差值,并按最小的增量排序..因此,如果您将请求限制为1,您将拥有最近的行!
希望它会对你有所帮助!
答案 2 :(得分:0)
我没有尝试过但我认为它应该可行
$query="SELECT abs(value-'".$_REQUEST['myValue']."') as num,value from table order by num asc limit 1";
答案 3 :(得分:0)
select id, value, ABS(1999 - value) as number
from tablename
order by number
limit 1