2016-12-16 24 views
2

我的MySQL表包含以下信息,選擇獨特的價值觀,MySQL的 - 從表

ID User   City   HomeLatitude  HomeLongitude 
1 Egon Spengler New York  19.123456   23.43546 
2 Mac Taylor  New York  19.12343588  23.43546 
3 Sarah Connor New York  19.128376   34.35354 
4 Jean-Luc Picard La Barre  11.345455   12.4356546 
5 Ellen Ripley Nostromo  32.76865   78.345435 

從這個表我需要因爲第3的位置幾乎是查詢獨特HomeLatitude值與前兩個小數點同樣的,所以我需要從三個行僅在第一行..

我用下面給出的查詢,

SELECT DISTINCT HomeLatitude, City FROM user; 

但是,這將返回表中的所有行。誰可以幫我這個事。

+0

可能的重複[格式數到2位小數](http://stackoverflow.com/questions/11190668/format-number-to-2-decimal-places) – Gunaseelan

回答

6

ROUND功能會給你要顯示的小數位的數量。

SELECT DISTINCT ROUND(HomeLatitude,2), City FROM user GROUP BY ROUND(HomeLatitude,2); 
+0

但是我只需要四捨五入HomeLatitude值後的唯一行。 – Anna

+0

如果使用地理空間數據是這樣簡單的:( – e4c5

+0

它的工作。謝謝你Gunaseelan .. – Anna

2

喜歡的東西:

SELECT (DISTINCT ROUND(HomeLatitude, 1)) AS HomeLatitude, City FROM user; 
+0

我檢查了這個,它會將HomeLatitude值舍入爲2小數點,但返回的行不是唯一的。 – Anna

+0

我改了左括號。否則,您需要將DISTINCT/ROUND作爲內部查詢。 – Pieter21

+0

對不起,它有一些語法錯誤。我認爲不可能像這樣給出括號。 – Anna

2

雖然使用基於舍入緯度或經度的解決方案可能會給出結果,但也可以爲意外結果做好準備。兩個地方也有可能具有完全相同的緯度但不同的經度和副曲。

如果你正在做的任何一種空間分析的,你應該投資在mysql spatial extensions和功能類似ST_WITHIN

次優選擇是使用haversine公式或類似的發現是相互靠近的地方。