sql - 在同一个表中查找没有相似位置的条目
问题描述
想象一下,我有一桌快餐店 ( FASTFOOD
)。它们中的每一个都在列GEO_X
和中设置了地理坐标GEO_Y
,还有一列FRANCHISE
。特许经营可能是 MCDONALDS 或 BURGERKING。
我想选择在特定距离内没有麦当劳的所有汉堡王,以地理坐标度数测量。
我该怎么做呢?
我能够列出在一定距离内确实有麦当劳的汉堡王:
select t.*
from FASTFOOD t
INNER JOIN FASTFOOD s ON (ABS(t.geo_x - s.geo_x) < 0.01 AND ABS(t.geo_y - s.geo_y) < 0.01)
WHERE t.FRANCHISE= 'BURGERKING'
AND s.FRANCHISE = 'MCDONALDS';
但我不知道如何找到“对面”。
INNER JOIN
无论我使用、LEFT JOIN
、RIGHT JOIN
还是,我的查询结果集都是相同的FULL OUTER JOIN
,因为所有条目都设置了地理坐标。
解决方案
尝试这个
--下面提到的'geo_z'是两个FRANCHISE'S之间的指定距离
select *
from (
select t.*
from FASTFOOD t
inner join FASTFOOD s on t.PrimaryKey=s.PrimaryKey
where ABS(t.geo_x-t.geo_y) > geo_z
) d
where d.FRANCHISE='BURGERKING'
推荐阅读
- javascript - 如何使用 Html/Jquery 中的特定路径/驱动器号打开文件浏览器?
- elasticsearch - Elasticsearch - 查找缺少两个字段的文档
- ios - Swift 中带有 UITableView 的基于 Rx 的树结构
- php - JMS 反序列化部分 xml
- java - 切换场景时如何保持FXML文件的变化
- elasticsearch - Elasticsearch 使用默认值更新索引上的新映射
- c# - C#在Json字符串中添加变量
- hibernate - 部分主键列上的 JPA OneToOne 映射
- sql - 如何使用 oracle 查找包含特定字符串值的列名
- android - MVVMCross 6.4.3 还原未按预期工作