我需要使用两列检索具有最接近值的行。下面的示例适用于一列,但是两列呢?
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
我需要使用两列检索具有最接近值的行。下面的示例适用于一列,但是两列呢?
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
我不确定 postgre 语法和你真正在做什么,但如果你想与 2 个字段进行比较,使用欧几里得距离怎么样
就像是
order by ((Column_X - myvalue_X)*(Column_X - myvalue_X) + (Column_Y - myvalue_Y)*(Column_Y - myvalue_Y)) limit 1
取决于你的意思。您是否希望他的行中两列的总和最接近原始行中相同两列的总和?还是产品?按字母顺序?
假设是总和。使用子查询
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)