sql - SQL - 框内查找框
问题描述
假设我有一张如下表:
CREATE TABLE boxes (
box_id TEXT PRIMARY KEY,
x1 INTEGER,
x2 INTEGER,
y1 INTEGER,
y2 INTEGER
)
我将如何查询以选择完全位于表中另一个框内的所有框?这是我尝试过的,但我没有得到正确的答案:
SELECT b2.box_id FROM boxes AS b1, boxes AS b2
WHERE (
b2.x1 >= b1.x1 AND
b2.x2 <= b1.x2 AND
b2.y1 >= b1.y1 AND
b2.y2 <= b1.y2
);
非常感谢任何可以将我推向正确方向的人!干杯!
解决方案
我不确定你所说的“完全在里面”是什么意思。如果您的意思是他们不能共享边界,请使用不等式
SELECT b2.box_id
FROM boxes b1 JOIN
boxes b2
ON b2.x1 > b1.x1 AND
b2.x2 < b1.x2 AND
b2.y1 > b1.y1 AND
b2.y2 < b1.y2;
如果您的意思是它们可以共享边界但不重合,那么:
SELECT b2.box_id
FROM boxes b1 JOIN
boxes b2
ON b2.x1 >= b1.x1 AND
b2.x2 <= b1.x2 AND
b2.y1 >= b1.y1 AND
b2.y2 <= b1.y2 AND
NOT (b2.x1 = b1.x1 AND
b2.x2 = b1.x2 AND
b2.y1 = b1.y1 AND
b2.y2 = b1.y2
);
推荐阅读
- javascript - 如何:单击按钮,将 html 跨度(文本)更改为任何输入值
- css - 将 font-display 属性注入所有 @font-face
- javascript - DOMException:无法在“元素”上执行“setAttribute”:“\#t”不是有效的属性名称
- c# - Azure AD 作为“外部提供者”?
- python - 如果在 xml 中找不到 xml 部分,有没有办法停止打印“无”
- php - PHP Leveral Applications InvalidArgumentException
- go - json.Encoder 中的这个日期输出来自哪里?
- angular - 角度 8 中的函数 take() 是否有替代方法?
- c# - 使用 CellPainting 显示 datagridview 值 0 和 null 的问题
- php - 将值作为对象从函数传递到控制器时出错