【问题标题】:How to merge two MySQL tables如何合并两个 MySQL 表
【发布时间】:2012-11-08 04:37:08
【问题描述】:

地区表

view    state         region
EB1     TamilNadu     Chennai-North
EB2     AndhraPradesh     Guntur

国家/地区表

view    code    country   state
EB1     +91     India     TamilNadu
EB2     +91     India     AndhraPradesh
EB3     +91     India     Delhi
EB4     +91     India     Delhi

我想根据region 表中不存在的视图合并这些表。

结果表必须如下:

view    code    country   state
EB3     +91     India     Delhi
EB4     +91     India     Delhi

(其中EB1,EB2 存在于region 表中)

【问题讨论】:

    标签: mysql sql merge


    【解决方案1】:

    您需要为此使用LEFT JOIN。您需要表 region 上不存在的值。所以你需要使用WHERE r.view IS NULL。你的整个查询应该是:

       SELECT c.*
         FROM country c
    LEFT JOIN region r
           ON c.view = r.view
        WHERE r.view IS NULL
    

    See this SQLFiddle

    更新

    如果您想创建一个名为 result 的新表并希望在该表中添加这些值,您可以使用以下查询:

    用于创建新表:

    CREATE TABLE result
        (`view` varchar(3), `code` varchar(4)
         , `country` varchar(5), `state` varchar(13))
    ;
    

    在该表上插入值:

    INSERT INTO result (`view`, `code`, `country`, `state`)
          SELECT c.view, c.code, c.country, c.state
            FROM country c
       LEFT JOIN region r
              ON c.view = r.view
           WHERE r.view IS NULL
    

    See this SQLFiddle

    【讨论】:

      【解决方案2】:

      如果要新建表:

      CREATE TABLE new_table (
        SELECT * FROM country
        WHERE view NOT IN (
          SELECT view FROM region
        )
      )
      

      或者,如果您只是想创建一个视图,请使用相同的查询,将 CREATE TABLE 替换为 CREATE VIEW AS。

      【讨论】:

        猜你喜欢
        • 2010-10-18
        • 2011-10-11
        • 2011-04-11
        • 1970-01-01
        • 2016-11-06
        • 2017-07-11
        • 2015-05-29
        相关资源
        最近更新 更多