【问题标题】:Interpolating Data from Multiple Parameter SQL Query [closed]从多参数 SQL 查询中插入数据 [关闭]
【发布时间】:2017-11-01 16:30:54
【问题描述】:

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

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

当使用新材质尺寸时,我想从最接近的值插入设置,以最大限度地减少我需要对新材质进行的调整。

给定数据库中不存在的 OD 和 ID,查询数据库以获取最接近的值的最佳方法是什么> 和

【问题讨论】:

  • 您自己尝试过什么吗?要开始的代码吗?
  • “最佳”是主观的。
  • 正如@Jared 的回答所暗示的那样,您可能应该与了解相关机器的人交谈,以找出用于计算“接近度”的函数。可能 OD 远比 ID 重要,反之亦然,这取决于机器正在执行的操作。

标签: python database sqlite interpolation pyodbc


【解决方案1】:

如果您可以计算每行与所需值之间的“距离”,则可以按此对结果集进行排序,如果您只想要“最接近”的结果,则将结果集限制为 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;

【讨论】:

    猜你喜欢
    • 2020-09-11
    • 2016-01-26
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多