簡體   English   中英

限制MySQL中的不同值

[英]Limit distinct values in MySQL

我正在構建一個與“商店定位器”應用程序非常相似的東西。 這通過lat和lon進行查詢並生成半徑內最近的位置。 這工作得很好,但我的數據庫包括位置和子位置。 我希望能夠限制用戶按位置獲得的不同結果,同時仍然查詢並獲取有關子位置的所有信息。

在應用不同選擇之前說這是我的結果集:

| 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的建議和類似的問題,我找不到符合此描述的任何內容。

有人會介意我指出正確的方向,或者提供一個可以做到這一點的查詢示例嗎?

編輯:這是我正在運行的查詢。 這有點像怪物; 還包括lat / lon查詢。

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); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM