在MySQL中限制不同的值

9
我是一个有用的助手,可以为您翻译文本。
我正在构建一款与“门店定位器”应用程序非常相似的东西。该应用程序通过纬度和经度进行查询,并在半径范围内生成最近的位置。这部分已经完美运行,但我的数据库包括位置和子位置。我希望能够通过位置限制用户获取的不同结果,同时仍然查询和获取有关子位置的所有信息。
假设这是在应用distinct选择之前的结果集:
| Location | Sub-Location |
+----------+--------------+
| Alpha    | Alpha North  |
| Alpha    | Alpha East   |
| Alpha    | Alpha West   |
| Beta     | Beta West    |
| Gamma    | Gamma North  |
| Gamma    | Gamma South  |
| Delta    | Delta West   |
| Delta    | Delta West 2 |

我需要一种方法来指定一个范围,比如2,并产生以下结果集:

| Location | Sub-Location |
+----------+--------------+
| Alpha    | Alpha North  |
| Alpha    | Alpha East   |
| Alpha    | Alpha West   |
| Beta     | Beta West    |

这相当于为用户生成“两个最近的”位置。经过长时间的谷歌搜索和查看Stack Overflow的建议和类似的问题,我找不到符合这个描述的东西。请问谁可以指导我正确的方向,或者提供一个可以实现这个功能的查询示例?
编辑:以下是我正在运行的查询。它有点复杂,包括经纬度查询。
SELECT * 
FROM( 
(SELECT * FROM locationstable JOIN
(SELECT DISTINCT location, 
( 3959 * acos( cos( radians(47.4972680) ) * cos( radians( lat ) ) 
* cos( radians( lon ) - radians(-122.2564740) ) + sin( radians( 47.4972680) ) 
* sin( radians( lat ) ) ) ) AS distance 
FROM locationstable
HAVING distance < 1
LIMIT 0, 5)
locationstable ON locationstable.location = location
)) locationstable 
LEFT JOIN informations 
ON substring(locationstable.locationsublocation, 4) = informations.storeinformations

忽略子位置以查找最近的两个位置,然后将结果连接到您的位置表中,以获取这些位置的所有子位置。 - eggyal
1个回答

9
子查询怎么样?
SELECT * FROM sometable WHERE Location IN (SELECT DISTINCT Location FROM sometable LIMIT 2); 

1
当然,是“IN()”。至于“ORDER BY”-子查询本身只是一个例子,在实际应用中会有所不同。 - parnas
1
没有办法仅使用连接来完成这个(至少我不知道:)。你的mysql版本是什么? - parnas
1
#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' - user1881190
3
啊,所以问题在于“IN”,而不是子查询。尝试使用“SELECT * FROM sometable JOIN (SELECT DISTINCT Location FROM sometable LIMIT 2) loc ON sometable.Location = loc.Location;”。 - parnas
1
是的,你的查询让我想起了Lisp(所有的括号 :)。问题在于这一行代码:“locationstable ON locationstable.location = location”。现在你有了两个名为locationstable的查询部分。尝试将其替换为类似于“locationstable2 ON locationstable2.location = locationstable.location”的内容。 - parnas
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接