我如何 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。
在我的数据库中,我有 table 个房屋。每个房子都有一个街道 ID 和距离街道起点的距离(以米为单位)。
我想找到同一条街道上距离小于例如彼此相距20米。
这是一个名为 HOUSES
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。