0
我想获取存储行数据中与输入值最接近的行。我如何编写查询?如何在SQL中获取近似行
ex)
index name score
--------------------
1 Jun 30
2 Ann -16
3 Mick 54
4 Kki 21
...
input : 25
--> result : 4, Kki, 21
我想获取存储行数据中与输入值最接近的行。我如何编写查询?如何在SQL中获取近似行
ex)
index name score
--------------------
1 Jun 30
2 Ann -16
3 Mick 54
4 Kki 21
...
input : 25
--> result : 4, Kki, 21
我不确定是否ex)
是杂乱无章的输入或表的名称。假设您的表格被称为t
,并且您的输入被存储为@input=25
。
set @input=cast(25 as signed);
Select t.index, t.name, t.score
from
(select
index
, abs(score - @input)
from t
order by 2
limit 1) as sq
inner join t using (index);
...如果你的表是一个临时表,它会给你一个关于不能打开同一个表两次的错误。在这种情况下,您可能需要以下代码。
create temporary table t2 like t;
insert into t2
select * from t;
...你会跟t2
更换两个引用之一t
。如果它是一个永久性表格,你不应该这样做。除此之外,代码的工作原理是首先找到行值和参考值之间绝对差值最小的行。 (我们进行排序,默认情况下排序从最小到最大,并限制返回到单个结果的行。)来自子查询的这一行在索引中连接回我们的表。
感谢那。 – fsfmals23134