从多个参数 SQL 查询中插入数据

Interpolating Data from Multiple Parameter SQL Query

我有一个具有以下参数的机器的设置数据库:

外径 (OD) |内径 (ID) |电源 |速度 |停留

当使用新的 material 尺寸时,我想从最接近的值插入设置,以尽量减少我需要为新的 material 做的调整。

给定数据库中不存在的 OD 和 ID,查询数据库中最接近值的最佳方法是什么 > 和 < OD 和 ID 组合,并从这些值中插入新尺寸的设置.

如果您可以计算每行与所需值之间的 "distance",则可以按此对结果集进行排序,如果您只想要 "closest" 结果,则将结果集限制为 1 :

SELECT * FROM settings ORDER BY my_distance_calculation(od, id, :given_od, :given_id) LIMIT 1;

my_distance_calculation 不一定是函数。它可以是数据库方言中的任何有效表达式。例如,这只是使用每个参数与其给定值的绝对差之和:

SELECT * FROM settings ORDER BY ABS(od - :given_od) + ABS(id - :given_id) LIMIT 1;

SQLite 没有内置幂函数,但如果有,那么您可以计算欧氏距离:

SELECT * FROM settings ORDER BY POW(POW(od - :given_id, 2) + POW(id - :given_id, 2), 0.5) LIMIT 1;