子查询加入转换
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;
如何将此查询转换为内部联接或任何类型的联接?此查询在 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;