最近的ID-PHP/MYSQL问题
我正在尝试运行一个查询,根据另一个查询提取与当前最接近的ID 我有一张城市郊区的表格,我想显示2个向上和2个向下,但在同一个城市,我的表格是:最近的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 | 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