簡體   English   中英

選擇多表聯接上的最大值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM