我有一个具有以下参数的机器设置数据库:
外径(OD)|内径(ID)|电源|速度|停留
当使用新的材料尺寸时,我想从最接近的值插入设置,以便最小化我需要对新材料进行的调整。
给定数据库中不存在的OD和ID,查询数据库的最接近值的最佳方法是什么?和< OD和ID组合以及这些值插入新尺寸的设置。
答案 0 :(得分:2)
如果你可以计算距离"在每行和所需的值之间,您可以按顺序对结果进行排序,如果只想要最近的"将结果集限制为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;