我有一个世界数据库。下表是通过以下方式生成的:
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
-----------------------------------------------------------------------
答案 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;