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);
...テーブルが一時テーブルの場合、同じテーブルを2回開くことができないというエラーが表示されます。その場合は、次のコードが必要になることがあります。
create temporary table t2 like t;
insert into t2
select * from t;
...あなたはt2
でt
に2つの参照のいずれかを置き換えると思います。永久的なテーブルの場合は、それを行う必要はありません。
これ以外にも、コードは、行の値と参照値の絶対差が最も小さい行を最初に見つけることによって機能します。 (ソートはデフォルトで最小から最大まで並べ替えられ、返される行は単一の結果に制限されます)。サブクエリからのこの単一の行は、インデックスのテーブルに戻って結合されます。
ありがとうございます。 – fsfmals23134