假设我有一个表a。这个表有ID,X_值,Y_值。表A的内容如下:
表A

ID X_value Y_value
1  100     150
2  110     170
3  120     190

现在,如果我比较130号和范围号(X_值-Y_值),我想得到最小(最小)差的范围的ID!如果我能这样命名的话?现在我们看到130号会落入所有这些范围,但我需要130号和范围号之间最小(最小)差的范围ID。要详细说明这一区别:
For range 1: 130-100=30 and 150-130=20
For range 2: 130-110=20 and 170-130=40
For range 3: 130-120=10 and 190-130=60

从这个精化中,我们看到最小的差异在第三个范围(即10)处,所以我想得到ID 3。如果我在MySQL db中有这个表,那么这个示例的查询是什么?!

最佳答案

select *
from yourtable
order by case when ABS(x-130)<ABS(y-130) then ABS(x-130) else ABS(y-130) end
limit 1


select id
from
(select id,x from yourtable union select id,y from yourtable) v
order by ABS(x-130)
limit 1

10-07 16:11