簡體   English   中英

如何合並兩個MySQL表

[英]How to merge two MySQL tables

區域

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

(其中EB1EB2存在於region表中)

你需要使用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

看到這個SQLFiddle

UPDATE

如果要創建名為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

看到這個SQLFiddle

如果要創建新表:

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

或者如果您只想創建視圖,請使用相同的查詢,將CREATE TABLE替換為CREATE VIEW AS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM