[英]Select the max value on a multiple table join
當那些表具有特定的幾何圖形時,我試圖從多個表中獲取最大日期。 我的表或多或少都是這樣的(當然它們都是不同的,但是為了使表更清楚我將它們縮短了):
表格類型:
Id, Info, Geometry, Date
最后,我還有另一個看起來像這樣的表(再次縮短):
B表:
Id, Geometry
現在,我想做的就是在Geometry上連接我所有的A類型表,它們與B表的Geometry相交,並獲得具有最新日期的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
。
似乎您在尋找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;
在粗略的筆畫中, MAX
是一個聚合函數,因此您可以使用MAX從多個不同的列中的同一列中獲取最大值。
GREATEST
是一個標量函數,您可以使用GREATEST從同一行的不同列中獲取最大值。
例如:
SELECT GREATEST(col1,col2,col3)
最棒的: https : //www.postgresql.org/docs/9.5/static/functions-conditional.html
最多: https : //www.postgresql.org/docs/9.5/static/functions-aggregate.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.