3

地域

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ます)

4

2 に答える 2

1

そのために使用する必要がありますLEFT JOIN。table に存在しない値が必要です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を参照してください

アップデート

という名前の新しいテーブルを作成し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を参照してください

于 2012-11-20T06:32:06.980 に答える
0

新しいテーブルを作成する場合:

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

または、ビューを作成するだけの場合は、同じクエリを使用して、を に置き換えCREATE TABLEますCREATE VIEW AS

于 2012-11-20T06:46:43.233 に答える