尝试从表示网格的表中查询“最近”结果

时间:2014-01-22 21:17:32

标签: mysql

我有一个表格,用于存储带有x,y和高程的网格。我有一些已知的高程和很多空(NULL)高程。我正在尝试构建一个插入(简单线性插值)缺失值的查询,但是我在开始时陷入困境:我甚至无法编写一个获取最接近的非空值的查询。我想要做的是使用引用外部查询的子查询,但这不起作用(“未知列”错误)。

这是我尝试过的,但这不起作用

SELECT tg.*, tx.elevation FROM `temp_grid` tg
INNER JOIN
(
SELECT xGrid, yGrid, elevation
FROM temp_grid 
WHERE elevation IS NOT NULL
AND yGrid > tg.yGrid
ORDER BY yGrid
LIMIT 1
) ti ON tg.xGrid=ti.xGrid
WHERE tg.elevation IS NULL

我一直在试图想到如何通过加入和分组来实现这一点,但却无法提出任何想法?

1 个答案:

答案 0 :(得分:1)

您可以在select子句中将其作为子查询执行:

SELECT tg.*,
       (SELECT elevation
        FROM temp_grid tg2
        WHERE elevation IS NOT NULL AND
              tg2.yGrid > tg.yGrid
        ORDER BY tg2.yGrid
        LIMIT 1
       ) as elevation
FROM `temp_grid` tg
WHERE tg.elevation IS NULL;

对于您的其他问题,您只需更改子查询中的whereorder by,即可根据您感兴趣的方向计算两点之间的距离。