简体   繁体   中英

MySQL - Select unique values from a table

My MySQL table contains the following information,

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

From this table I need to query unique HomeLatitude values with first two decimal point because the first 3 location are almost same, so i need only the first row from the three rows..

I used the below given query,

SELECT DISTINCT HomeLatitude, City FROM user;

But that will return all the rows from the table. Can anyone help me on this.

ROUND函数将为您提供要显示的小数位数。

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

就像是:

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

While using a solution that is based on rounding a latitude or longitude may give you results, also be prepared for unexpected results. It is also possible for two places to have the exact same latitude but different longitudes and vice verce.

If you are doing any kind of spatial analysis, you should invest in mysql spatial extensions and a function like ST_WITHIN

Second best option is to use the haversine formula or similar to find places that are close to each other.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM