【发布时间】:2020-06-01 20:14:28
【问题描述】:
我有以下坐标记录
我想要的是,获取 z1 与任何其他记录的差异小于 4(阈值)的所有记录
这意味着在上表中,最后 2 条记录的差异小于 4,然后我想在查询中获取它们。
如果存在z1 = 808 的新记录,则应该返回该记录和id 为28478 的记录,因为它们的差异小于4。
有什么方法可以在 MySql 中实现这一点吗?
或者也许是 PHP,不用说这么久?
编辑: 这是数据:
+-------+-------+-------+-------+-------+
| id | x1 | x2 | z1 | z2 |
+-------+-------+-------+-------+-------+
| 28478 | -1500 | -1496 | 804 | 808 |
| 29929 | -1500 | -1496 | 1444 | 1448 |
| 30051 | -1500 | -1496 | -1168 | -1164 |
| 30346 | -1500 | -1496 | -336 | -332 |
| 28039 | -1496 | -1492 | -1128 | -1124 |
| 28969 | -1496 | -1492 | -1424 | -1420 |
| 29265 | -1496 | -1492 | -520 | -516 |
| 29872 | -1496 | -1492 | 1288 | 1292 |
| 30122 | -1496 | -1492 | -932 | -928 |
| 30846 | -1496 | -1492 | 1376 | 1204 |
| 30898 | -1496 | -1492 | 1380 | 1384 |
+-------+-------+-------+-------+-------+
我试过了
select *
from coordinates t
where
x1 between -1500 and -1500 + 4
and exists (
select 1
from coordinates t1
where t1.id <> t.id
and abs(t1.z1 - t.z1) <= 4);
但没用。
【问题讨论】:
标签: php mysql sql algorithm select