0

我需要使用两列检索具有最接近值的行。下面的示例适用于一列,但是两列呢?

order by abs(Column_X - myvalue_X) limit 1

我需要这样的东西:

order by abs(Column_X - myvalue_X),abs(Column_Y - myvalue_Y) limit 1 //wrong row

我正在使用带有 postgis 的 postgres

4

2 回答 2

3

我不确定 postgre 语法和你真正在做什么,但如果你想与 2 个字段进行比较,使用欧几里得距离怎么样

就像是

order by ((Column_X - myvalue_X)*(Column_X - myvalue_X) + (Column_Y - myvalue_Y)*(Column_Y - myvalue_Y)) limit 1
于 2013-10-02T13:35:18.760 回答
0

取决于你的意思。您是否希望他的行中两列的总和最接近原始行中相同两列的总和?还是产品按字母顺序

假设是总和。使用子查询

Select * From Table t1
  join table t2
     on t1.colA + t1.colB = 
         (Select Max(colA + colB)
          From Table
          Where colA + colB < t1.colA + t1.colB)

如果您管理产品,那么

Select * From Table t1
  join table t2
     on t1.colA * t1.colB = 
         (Select Max(colA * colB)
          From Table
          Where colA * colB < t1.colA * t1.colB)
于 2013-10-02T13:32:02.893 回答