我正在尝试使用 a 创建一个简单的查询,inner lateral join
但我想将连接限制为子查询中的单个结果
select b.`CODE`
from foo.bar.`BRANCH` b
inner join lateral (
select branch_id
from foo.bar.`BRANCH_DISTANCE`
where branch_id=b.CODE
and distance < 100
limit 1
) on true
该BRANCH_DISTANCE
表包含任何两个分支之间的距离,我想返回100 km
另一个分支内的所有分支,这就是为什么在子查询中,只要有一条记录包含该分支并且其距离小于 100,它应该返回分支(并停止寻找任何进一步的匹配)。
但是当我添加限制时,查询只返回一条记录。取消限制后,将返回大约 2000 条记录。
如果我用 替换select b.CODE
,select distinct b.CODE
得到大约 500 个结果(这是正确的答案)。
我的目标是不在distinct
select 语句中使用关键字,这就是为什么我在子查询中添加限制,以便不会对BRANCH_DISTANCE
包含分支代码和距离 < 100 的表中的每条记录进行连接(因为它是一个分支可能与多个分支之间的距离小于 100 公里)。