使用MySQL DISTINCT消除重复行

时间:2011-07-27 00:02:43

标签: mysql distinct

我有一个世界数据库。下表是通过以下方式生成的:

SELECT *
FROM geolocations
WHERE city = 'Santa Cruz'

该表包含每个城市的多个条目,它曾经包含一个邮政编码字段。 我想删除城市的重复条目。我尝试使用:

CREATE TABLE tmp
SELECT DISTINCT city, region
FROM geolocations

前面的语句删除了重复的条目,但是如何将id和其他字段复制到新表?

-----------------------------------------------------------------------
id    Country   Region     City       Latitutde         Longitude
-----------------------------------------------------------------------
4683    US  CA  Santa Cruz  37.0447998047   -122.1020965576      
5748    US  CA  Santa Cruz  36.9712982178   -121.9875030518      
9506    US  CA  Santa Cruz  37.0101013184   -122.0324020386      
11205   US  CA  Santa Cruz  37.0344009399   -121.9796981812      
11379   US  CA  Santa Cruz  36.9898986816   -122.0603027344      
13146   US  CA  Santa Cruz  37.0101013184   -122.0324020386      
14362   US  CA  Santa Cruz  37.0101013184   -122.0324020386      
30055   BO  03  Santa Cruz  -12.2833003998  -66.2500000000   
31760   ES  59  Santa Cruz  42.6666984558   -2.3499999046    
39477   AR  22  Santa Cruz  -27.6667003632  -64.2667007446   
-----------------------------------------------------------------------

3 个答案:

答案 0 :(得分:0)

在MSSQL中就是这个“

SELECT distinct City, Region
INTO tmp
FROM geolocations 
WHERE City = 'Santa Cruz'

在MYSQL中,您可以使用select into table

虽然我没有测试过,但是这样的事情应该有效:

INSERT INTO tmp(City, Region)
    SELECT distinct City, Region
    FROM geolocations WHERE WHERE City = 'Santa Cruz'

答案 1 :(得分:0)

正如Marvo所说,那些不是重复的行perse但是有些字段是重复的。最好的方法可能是重新设计您的数据库并将该表分成两个 - 至少 - 。这可以作为一个起点:

首先创建一个包含不同唯一城市的表格:

CREATE TABLE city SELECT DISTINCT city FROM db

向该表添加主键:

ALTER TABLE city ADD id_city INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST

创建一个表格,其中包含您的所有记录以及每条记录所属的相应城市的ID:

CREATE TABLE records SELECT db.id,db.country, db.region, city.id_city, db.lat,db.long FROM db INNER JOIN city ON db.city = city.city

如果您愿意,可以为与国家相关的城市再制作一个。

答案 2 :(得分:0)

此查询有效我想选择不同的城市,区域组合,并将其与新表格中的关联数据分组。

CREATE TABLE clean_gls SELECT * FROM geolocations GROUP BY city, region;