我需要使用两列检索具有最近值的行。 以下示例适用于一列,但两列如何?
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
答案 0 :(得分:3)
我不确定postgre语法和你真正想要的是什么,但是如果你想与2个字段进行比较,那么如何使用Euclidean distance
有点像
order by ((Column_X - myvalue_X)*(Column_X - myvalue_X) + (Column_Y - myvalue_Y)*(Column_Y - myvalue_Y)) limit 1
答案 1 :(得分:0)
取决于你的意思。你想让他排在两列的 sum 最接近原始行中相同两列的总和的位置吗?还是产品? 字母?
假设这是总和。使用子查询
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)