SQL查询最接近某一值的数据

数据库中有多条数据,有一列数据时数值的,如2,6,9,12,15,16,查询最接近10的数值,既9,查询语句该怎么写?... 数据库中有多条数据,有一列数据时数值的,如2,6,9,12,15,16,查询最接近10的数值,既9,查询语句该怎么写? 展开
 我来答
SQL的艺术
推荐于2017-09-22 · SQL写多了就会在追求极致
SQL的艺术
采纳数:2040 获赞数:3323

向TA提问 私信TA
展开全部

接近某一值必须要用绝对值函数【abs】,例如数:【1,2,3,4,5,6,7】,最接近6的肯定是5和7,最接近又要用到Top 1,这样获得最接近的一条记录

例如:

查询 表:【table_temp】中的数字列:【colNum】最接近10的数据

select top 1 * from table_temp order by abs(colNum-10)
大大虫
高粉答主

2013-10-08 · 醉心答题,欢迎关注
知道大有可为答主
回答量:4.2万
采纳率:76%
帮助的人:1.4亿
展开全部
SELECT * FROM tablename 
WHERE ABS(column-10)=(SELECT MIN(ABS(column-10)) FROM tablename)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-08
展开全部
SELECT TOP 1
*
FROM

ORDER BY
ABS( 10 - 列 );
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_rain_ice
2013-10-08 · TA获得超过1419个赞
知道小有建树答主
回答量:1286
采纳率:0%
帮助的人:1044万
展开全部
select min(abs(a.col-10)) from table
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-08
展开全部
KEY_1 KEY_2 KEY_3 N1
20131008001 1 0 2
20131008001 2 0 6
20131008001 3 0 9
20131008001 4 0 12
20131008001 5 0 15
20131008001 6 0 16

SELECT a.*,abs(n1 - 10)
FROM (SELECT key_1,key_2,key_3, n1
FROM table_temp a
WHERE a.rekey_1 = '20131008001') a
WHERE abs(n1 - 10) = (SELECT MIN(abs(b.n1 - 10))
FROM table_temp b
WHERE b.key_1 = '20131008001' );
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式