最近的ID-PHP/MYSQL问题

最近的ID-PHP/MYSQL问题,php,mysql,Php,Mysql,我正在尝试运行一个查询,根据另一个查询提取与当前最接近的ID 我有一张城市郊区的表格,我想显示2个向上和2个向下,但在同一个城市,我的表格是: id | suburb_name | region 1 | Caloundra | Sunshine Coast 2 | Currimundi | Sunshine Coast 3 | Bribie Island | Morton Bay 4 | Caboolture | Morton Bay 5 | Golden Be

我正在尝试运行一个查询,根据另一个查询提取与当前最接近的ID

我有一张城市郊区的表格,我想显示2个向上和2个向下,但在同一个城市,我的表格是:

id | suburb_name   | region
1  | Caloundra     | Sunshine Coast
2  | Currimundi    | Sunshine Coast
3  | Bribie Island | Morton Bay
4  | Caboolture    | Morton Bay
5  | Golden Beach  | Sunshine Coast
因为我懒得再举更多的例子了,所以就往上一个往下一个。我们目前在id 2上。如果我看1,我会看到莫顿湾,这是错误的。我要看身份证5号。下一个具有相同区域的ID是哪个

这是完全错误的,但这就是我的差距:

SELECT
    slug
    , suburb_name
    , (SELECT location_id FROM rh_suburbs WHERE region = '$sub_region') as suburbs
FROM rh_suburbs
WHERE location_id in ($plus_one, $plus_two, $minus_one, $minus_two)
  AND status = '1'
  AND location_id != '$current'
LIMIT 4

在您的MySQL版本中,使用选定位置前后的行的
联合
可能最容易实现这一点。作为直接的SQL查询:

(SELECT *
 FROM rh_suburbs
 WHERE region = 'Sunshine Coast'
   AND id < 6
 ORDER BY id DESC
 LIMIT 2)
UNION ALL
(SELECT *
 FROM rh_suburbs
 WHERE region = 'Sunshine Coast'
   AND id > 6
 ORDER BY id ASC
 LIMIT 2)
 ORDER BY id

显示预期结果。看看窗口函数(MySQL-8,MariaDB-10.2+)。这些使它变得非常简单。你使用的是什么版本的MySQL?@nick 5.6.47版本是否像$additional=$db->query(“你在这里查询”);它抛出了一个500错误,我在mysql中运行了它,最后一行显示了一条警告:这种类型的子句以前被解析过。(接近ORDER BY)无法识别的语句类型。(靠近ORDER BY)但是是的,php一运行就抛出它。这是我的错,我没有把$db传递到我的类中。这是一个完美的答案。
id  suburb_name     region
2   Currimundi      Sunshine Coast
5   Golden Beach    Sunshine Coast
7   Currimundi 2    Sunshine Coast
10  Golden Beach 2  Sunshine Coast