我有一个表格,用于存储带有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
我一直在试图想到如何通过加入和分组来实现这一点,但却无法提出任何想法?
答案 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;
对于您的其他问题,您只需更改子查询中的where
和order by
,即可根据您感兴趣的方向计算两点之间的距离。