mysql - 限制 MySQL 中的不同值

标签 mysql limit 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

最佳答案

子查询怎么样?

SELECT * FROM sometable WHERE Location IN (SELECT DISTINCT Location FROM sometable LIMIT 2); 

关于mysql - 限制 MySQL 中的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16257890/

相关文章:

mysql - 从一张表和一张对应的表中获取记录

sql - 在有条件的多对多表中执行左连接

mysql - 在 MySql 中存储可搜索的 JSon

mysql - mysql查询后释放内存

mysql - 限制在特定表中使用 Select * in MySQL

MySQL 子查询 AND 'NOT IN'

Facebook 开放图谱 API : weird behavior of parameter limit while getting a paginated user's news feed

java - 如何在Elasticsearch中使用RestHighLevelClient获得不同的值?

postgresql - 在反向 int 对中使用 DISTINCT 可消除重复项

PostgreSQL GROUP BY 问题