如何将一个表的一部分放入MySQL的另一个表中

时间:2014-07-04 19:21:52

标签: php mysql sql database

我需要MySQL DB中两个表的帮助。 这两个表都涉及美国的ZipCodes。 我发现的问题是,并非所有的zipcodes都包含在每个表中。 一个表有拉链码,另一个表没有,反之亦然。

所以......我可以用两种方式解决这个问题...... 1)找一个拥有所有美国邮政编码的DB并从中获取副本的人。或者2)找一个可以帮助我编写脚本来复制一个表中的数据并将其插入另一个表的人。所以我最终得到一个包含所有zipcodes的表。我设想在一个表中搜索其他表中找不到的zipcodes,然后将丢失的zipcode插入到另一个表中。

请记住,zipcode不仅仅包含一个字段。我们还有县,州,经度,纬度,城市......等。

我的最终目标是拥有一张包含所有美国邮政编码的表格以及每个邮政编码的正确经度和纬度。

那里有人有这些解决方案吗?

3 个答案:

答案 0 :(得分:1)

INSERT IGNORE INTO table1 (SELECT zipcode FROM table2)

你必须自己添加额外的字段,因为你没有发布它们我不知道它们是什么。

INSERT IGNORE只是跳过任何重复的记录。

(你在zipcode列上有一个unique索引吗?)

答案 1 :(得分:0)

有几种方法可以做到这一点,其中有两种方法

方式1:

    INSERT INTO table1 (column1, column2 ... zip_column) 
SELECT column1, column2 ... zip_column FROM table2 
WHERE table2.zip_column NOT IN (SELECT zip_column FROM table 1) 

方式2(更好的方式):

在table1中的邮政编码列上创建一个唯一索引,并且:

    INSERT IGNORE INTO table1 (column1, column2 ... zip_column) 
SELECT column1, column2 ... zip_column FROM table2 

答案 2 :(得分:0)

试试这个:

INSERT INTO table1 (county, state, longitude, latitude, city .... add more here) 
  SELECT table2.area,table2.zipcode FROM table2 
  LEFT JOIN table1 ON 
         (
          table2.county=table1.county AND 
          table2.state=table1.state AND
          table2.longitude=table1.longitude AND
          table2.latitude=table1.latitude AND
          .... add more here
         ) 
  WHERE 
      table1.county IS NULL OR 
      table1.state IS NULL OR
      table1.longitude IS NULL OR
      table1.latitude IS NULL OR
      .... add more here