我如何 select 来自 table 且距离小于 x 的对?

How do I select pairs from table with distance less than x?

在我的数据库中,我有 table 个房屋。每个房子都有一个街道 ID 和距离街道起点的距离(以米为单位)。

我想找到同一条街道上距离小于例如彼此相距20米。

这是一个名为 HOUSES

的示例 table
house_id  street_id  distance_from_beginning
1         100        5
2         100        10
3         100        15
4         200        5
5         200        20
6         200        10

我正在搜索类似于

的SQL语句
SELECT 
    h1.house_id, 
    h2.house_id, 
    abs(h1.distance_from_beginning - h2.distance_from_beginning) distance
from HOUSES h1, h2 
where h1.street_id=h2.street_id and distance < 20

这可能吗? Postgresql 数据库的正确语法是什么?

HOUSE table 房屋位于同一条街上的地方使用自连接:

SELECT 
    h1.house_id, h2.house_id, ABS(h1.distance - h2.distance)
FROM 
    HOUSES h1
    INNER JOIN HOUSES h2 
        ON  h1.street_id = h2.street_id 
        AND h1.house_id < h2.house_id
        AND ABS(h1.distance - h2.distance) < 20

测试于 this db fiddle