这是 JOIN、Lookup 还是如何 select 仅记录匹配两个表中的列

Is this a JOIN, Lookup or how to select only records matching a col from two tables

我有两个 postgres 表,其中列出城市名称的一列匹配。我正在尝试创建一些记录的视图,这些记录是我通过 GeoServer 上的 WMS 在地图上显示的。

我需要 select 仅记录 table1 中的 100k 条记录,其城市名称与 table2 中列出的 20 条记录中的城市名称相匹配。

列出我尝试过的所有内容会浪费您的时间。我已经尝试了每个加入教程和示例,但很困惑为什么我无法取得任何成功。我真的很感激一些指导。

这是一个最新的查询,但是,如果这是错误的方法,请忽略,因为我有大约 50 次类似的尝试。

SELECT t1.id,  
       t1.dba,  
       t1.prem_city,  
       t1.geom  
       t2.city_label  
FROM schema1.table1 AS t1  
     LEFT JOIN schema2.table2 AS t2  
        ON t2.city_label = t1.prem_city;

感谢您的帮助!

您的查询似乎是正确的,只是一个小改动 - LEFT JOIN 保留左侧的所有记录 table,只保留右侧的匹配记录。如果您只想要出现在两者中的那些 - 需要 INNER JOIN

SELECT t1.id,
       t1.dba,
       t1.prem_city,
       t1.geom,
       t2.city_label
FROM schema1.table1 t1
JOIN schema2.table2 t2
 ON t2.city_label = t1.prem_city;