子查询加入转换

Subquery to join conversion

如何将此查询转换为内部联接或任何类型的联接?此查询在 SQL.

中与 WITH 一起工作正常
with trr as(SELECT DISTINCT td.* FROM "groups" g inner join
"territoryDetails" td on td."groupId" = g.id where g."orgId" = 13),
tdd as(select trr."groupId" from contacts c inner join trr on
ST_Intersects(trr.points,c."geoPoint") where c.id = 567 and
c."orgId"=130) select * from tdd;

您当前基于 CTE 的查询实际上 已经在使用联接,但我怀疑 CTE 本身的使用就是这里的问题。您可以通过内联和删除所有 CTE 来重构查询:

SELECT trr.groupId
FROM contacts c
INNER JOIN
(
    SELECT DISTINCT td.*
    FROM groups g
    INNER JOIN territoryDetails td ON td.groupId = g.id
    WHERE g.orgId = 13
) trr
    ON ST_Intersects(trr.points, c.geoPoint)
WHERE
    c.id = 567 AND c.orgId = 130;