gpt4 book ai didi

mysql - 在mysql中查找前一个和后一个raw

转载 作者:行者123 更新时间:2023-11-29 07:36:58 25 4
gpt4 key购买 nike

我有一个stop表,找到停靠点名称后我想找到该名称的前一个和后一个数据name, lat, longi

CREATE TABLE IF NOT EXISTS stops
stop_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(30) NOT NULL,
lat double(10,6) NOT NULL,
longi double(10,6)NOT NULL)

enter image description here

例如,如果名称是TEST,我想获取 ABC 和天空的名称、纬度和经度。当 stop_id 之间存在差异(如 2,5,7,12

)时,它甚至应该起作用

感谢任何帮助。

最佳答案

您可以使用变量来实现您想要的:

SELECT stop_id, name, lat, longi, rn
FROM (
SELECT stop_id, name, lat, longi,
@r:=@r+1 AS rn
FROM stops, (SELECT @r:=0) var
ORDER BY stop_id, name ) s
WHERE name != 'TEST' AND
rn >= (SELECT row_number
FROM (
SELECT name, @row_number:=@row_number+1 AS row_number
FROM stops, (SELECT @row_number:=0) var
ORDER BY stop_id, name ) s
WHERE name = 'TEST' ) - 1
ORDER BY stop_id LIMIT 2

Demo here

此查询:

SELECT name, @row_number:=@row_number+1 AS row_number
FROM stops, (SELECT @row_number:=0) var
ORDER BY stop_id, name

使用两次来模拟MySQL中不可用的ROW_NUMBER窗口函数。使用它,我们可以识别 name = 'TEST' 的记录的“行号”,并使用此信息来获取我们想要的记录。

关于mysql - 在mysql中查找前一个和后一个raw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30424648/

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