我正在尝试更新的总收入为办事处位于不同的地域。 该地区的定义界和多边这两者都是在形状。形状列。
当我运行查询下,MySQL引发"R_INVALID_GROUP_FUNC_USE:无效的使用组的功能"
我尝试适应 这个 答案,但我不能找出的逻辑,与有条件的加入和地理空间数据--它不是简单的添加一个子查询与其中的条款。 (或者是什么?)
对于背景下,我有约350个地理区域和150000办事处。
UPDATE
shapes s
LEFT JOIN offices ON (
CASE
WHEN s.type = 'circle' THEN ST_Distance_Sphere(o.coords, s.shape) < s.radius
ELSE ST_CONTAINS(s.shape, o.coords)
END
)
SET
s.totalRevenue = SUM(o.revenue);
更新:
这一工作,但它的缓慢和令人困惑。 有没有更快更简洁的方式?
UPDATE
shapes s
LEFT JOIN (
SELECT
t.shape_id,
SUM(g.revenue) revenue
FROM
shapes t
LEFT JOIN offices o ON (
CASE
WHEN t.type = 'circle' THEN ST_Distance_Sphere(o.coords, t.shape) < t.radius
ELSE ST_CONTAINS(t.shape, o.coords)
END
)
GROUP BY
t.shape_id
) b ON s.shape_id = b.shape_id
SET
s.totalRevenue = b.revenue;