当这些表具有特定几何时,我试图从多个表中获取最大日期。 我的桌子或多或少看起来像那样(当然他们都是不同的但我缩短了它们以便更清楚):
表格类型:
Id, Info, Geometry, Date
最后我还有一张看起来那样的桌子(再次缩短):
B表:
Id, Geometry
现在,我想要做的是将几何表格连接到几何图形,它们与B表格几何图形相交,并获得具有最新日期的A表格。
我目前有以下请求正在运行:
UPDATE last_updateT SET date_last_update= S.dateMax
FROM
(SELECT B.gid, MAX(A.last_date) AS dateMax
FROM B
JOIN A ON ST_Intersects(B.geometry, A.geometry)
GROUP BY B.gid) S
WHERE T.id = S.gid;
现在我希望能够在多个桌子上进行这种联接,看起来像表A.我已经听说过函数GREATEST
,但我不知道如何用它。
另外,如果有任何差异,我会使用Postgresql
。
答案 0 :(得分:1)
您似乎在寻找UNION ALL
,因此您可以将来自不同表的数据视为仅来自一个表的数据:
SELECT
b.gid,
MAX(x.last_date) AS dateMax
FROM b
JOIN
(
SELECT geometry, last_date FROM a
UNION ALL
SELECT geometry, last_date FROM aa
UNION ALL
SELECT geometry, last_date FROM aaa
) x ON ST_Intersects(b.geometry, x.geometry)
GROUP BY b.gid;
答案 1 :(得分:0)
概括地说,MAX
是一个聚合函数,因此您可以使用MAX从多个不同列的同一列中获取最高值。
GREATEST
是一个标量函数,您使用GREATEST从同一行中的不同列获取最高值。
例如:
SELECT GREATEST(col1,col2,col3)
最伟大的:https://www.postgresql.org/docs/9.5/static/functions-conditional.html
Max:https://www.postgresql.org/docs/9.5/static/functions-aggregate.html