gpt4 book ai didi

php - SQL 查询以显示最接近特定事件的数据

转载 作者:行者123 更新时间:2023-11-30 23:50:29 26 4
gpt4 key购买 nike

我正在尝试弄清楚如何编写一个 MySQL 查询,该查询将返回最近的数据,其中 Actor = 210 就 E_id = 3 而言。

这是我原来的表格:

Session              Player  E_id  Time                     Actor  PosX  PosY  index
------------------- ------ ---- ----------------------- ----- ---- ---- -----
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 210 906 466 6
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 210 342 540 7
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 31 812 244 8
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 210 248 614 9
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 21 342 688 10
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 49 812 170 11
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 50 248 466 12
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 210 718 318 13
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 52 154 466 14
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 211 499 250 15
23131885ccc560bb6c8 10125 3 01-11-2012 08:56:40.63 208 510 414 16
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 210 248 466 17
23131885ccc560bb6c8 10125 15 01-11-2012 08:56:38.323 20 718 318 18
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 52 154 466 19
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 11 499 250 20
23131885ccc560bb6c8 10125 3 01-11-2012 08:56:40.63 208 510 414 21

如果我触发查询

select * from table where E_id = 3 or Actor = 210;

我得到了这个结果

Session              Player  E_id  Time                     Actor  PosX  PosY  index
------------------- ------ ---- ----------------------- ----- ---- ---- -----
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 210 906 466 6
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 210 342 540 7
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 210 248 614 9
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 210 718 318 13
23131885ccc560bb6c8 10125 3 01-11-2012 08:56:40.63 208 510 414 16
23131885ccc560bb6c8 10125 17 01-11-2012 08:56:38.323 210 248 466 17
23131885ccc560bb6c8 10125 3 01-11-2012 08:56:40.63 208 510 414 21

预期结果是: 索引号为 13 的行索引号为 16 和 索引号为 17 的行索引号为 21

索引 16 和 21 的 e_id 都是 3

最佳答案

您的输入是 E_ID、Index 和 Actor。索引似乎是一个独特的列,因此您不需要 E_ID。

此查询将找到最近的(按索引距离)。但它只会查找索引较低(向上)的行。

select   *
from your_tbl
where 16 - `index` >= 0 and Actor = 210
order by 16 - `index`
limit 1

16 给你 13,21 给你 17

还有另一个查询没有只查找的限制。它将找到最接近的索引:

select   *
from your_tbl
where Actor = 210
order by abs(21 - `index`)
limit 1

我给出了两个问题,因为我不明白问题中的 nearest 是什么意思。如果它在索引距离 abs(index1 - index2) 方面最接近,那么对于 16 17 和 13 一样好,因为它们都有 Actor = 210 并且它们是相邻的

关于php - SQL 查询以显示最接近特定事件的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14351745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com