SQL ServerでSELECTから更新する方法
この記事では、更新および使用を挿入しながら、インナー更新データ、MERGE参加について説明します。
テキストフレーズ:
-
間接的にテーブルの内容を変更:間接的にテーブルを更新
-
直接参照:直接参照
-
使用してデータのサブセット:データのサブセットを使用することにより、
-
二次クエリステートメント:補助クエリ
-
UPDATEの実行:upadteを実行します
-
簡潔には、探検:簡単な紹介を
-
このアクションを実行する:これを行ってください
-
互いに比較:互いに比較
-
効果的に同期する:効率的な同期を
-
操作機能:操作機能
-
この機能は本当にすることができますどのように強力:この場所の最も強力な機能
-
最初の数行:最初の数行
-
自己説明:自己説明
-
後続の分岐ロジックで次の分岐ロジックに
-
コンペアマッチレコード:比較のレコードをマッチング
-
深い理解:固体理解しています
ほとんどの状況では、SQLの更新を使用して実行されている 直接参照を (特定のテーブルにUPDATE books SET books.title = 'The Hobbit' WHERE books.id = 1
)。
ほとんどの場合、SQLは、特定のテーブル(UPDATEブックセットのbooks.title =「更新するために使用される books.id = 1ホビット」) されている直接参照実行します。
しかし、機会に、それがために有用であることが証明される テーブルの内容を変更し 、間接的に二次照会ステートメントから得られたデータのサブセットを使用することにより、。
時々 、しかし、二次クエリから取得したデータのサブセットを使用することによって、間接的にテーブルの内容を変更有益であることが判明し得ます。
実行 UPDATE
二次使用 SELECT
の文は 、主にSQL Serverのバージョンに応じ、あなたが使用しているかに応じて、次のいずれかの方法で達成することができます。
使用辅助
ステートメントは来
执行UPDATE
、使用するSQL Serverのバージョンに応じて、次のいずれかの方法で達成することができます。
私たちは、よ 簡単に探る あなたがあなたのための最高の作品何を見つけることができるように両方のオプションを。
我々はなります簡単に紹介し、あなたが最も適している方法を見つけるようにすることを、これらの2つのオプション。
INNERを使用すると、内部接続に参加します
すべてのSQL Serverインストールのための最も基本的な方法は 、このアクションを実行するには、 使用する INNER JOIN
2つの異なるテーブルの列の値がされていることにより、 互いに比較します。
すべてのSQL Serverのインストールの場合は、これを行う最も基本的な方法を使用することにあるINNER JOIN
テーブルの列の2つの異なる値がそうすることを、互いに比較。
-ブック(primary_author、AUTHOR_ID、タイトル)
-作者(名前、ID)
- 表の本では、authorsテーブルはbooks.author_id = authors.idを介して接続されています。タイトル=「ホビット」データ、修飾books.primary_author = authors.name検索
UPDATE書籍
SET books.primary_author = authors.name
ブックスから
INNERは、著者のJOIN
books.author_id = authors.id ON
books.title = 'ホビット'
上記の例では、我々はしている と一致するフィールド で「ホビット」のため の値に一致する、それぞれのクエリ内の両方のテーブル と 。UPDATING
books.primary_author
authors.name
JOINING
authors.id
books.author_id
上記の例では、我々はUPDATING
books.primary_author
= authors.name
ことによってJOINING
、それらのそれぞれの二つのテーブルへのクエリに一致する「ホビット」の値に一致するauthors.id
としますbooks.author_id
。
同時にUPDATEやINSERTにMERGEを使用しても、MERGEを使用して、更新、挿入
SQL Server 2008およびそれ以降のために、Microsoftは非常に有益な導入 MERGE
、上記と同様な操作 INNER JOIN
方法が、 MERGE
試みはANの両方を実行する UPDATE
と INSERT
一緒にコマンドを。
SQL Server 2008およびそれ以降のバージョンについては、Microsoftは非常に便利導入MERGE
上記のことを操作INNER JOIN
方法が似ているのが、MERGE
行おうと UPDATE
してINSERT
コマンド。
これは、 効果的に同期し たクエリに基づいて、2つのテーブルを2つが一致するため、必要に応じてレコードを更新すると、挿入、行いました。
これは、クエリに基づいて実行されます効率的に同期する二つのテーブル、レコードと更新をし、二つのテーブルの一致に応じて挿入。
-ブック(primary_author、AUTHOR_ID、タイトル)
-作者(名前、ID)
図書INTO MERGE
著者を使用した
books.author_id = authors.id ON
THEN MATCHED
UPDATE SET
books.primary_author = authors.name
一致しないTHEN
INSERT
(本を.author_id、books.primary_author)
VALUES
(authors.id、authors.name)
使用して完全なクエリでは、 MERGE
基本のこと、その後、確かに少し複雑です INNER JOIN
が、あなたはどのように把握一度 の操作機能を、あなたはすぐに理解します 。この機能は、本当にすることができますどのように強力。
完全な問い合わせを使用する場合はMERGE
、確かに基本的なクエリよりも複雑であるINNER JOIN
が、一度マスターし操作する機能、あなたはすぐに理解し、この機能の本当の力を。
最初の数行は かなりある 自己説明:
最初の数行はある自明:
本INTO MERGE
著者を使用した
books.author_id = authors.id ON
我々はしたい MERGE INTO
(UPDATE
/ INSERT
) books
二次使用してテーブル authors
表を、私たちは同じに基づいて2つのマッチングしている books.author_id = authors.id
の比較。
私たちは、補助テーブルを使用するauthors
テーブルをMERGE INTO
(UPDATE
/ INSERT
)、books
および同じ我々に基づいてbooks.author_id = authors.id
2試合を比較するために使用します。
どこで MERGE
コマンドが異なるがあり 、次の分岐ロジックで。
前記MERGE
異なるコマンドは、後続の分岐ロジック。
MATCHED THEN
UPDATE SET
books.primary_author = authors.name
ここでは、記録時にのみアクションを実行するためにSQLを求めている MATCHED
既存のレコードが見つかったとき- 。その場合には、我々は標準行い UPDATE
、我々が設定し、以前と同じように books.primary_author
等しくするフィールド authors.name
のフィールドを。
ここでは、場合にのみ、SQLレコードを尋ねるMATCHED
-レコードを既存の操作を実行する場合にのみ見つけること。この場合、我々はなりUPDATE
、以前のように標準を行うbooks.primary_author
フィールドが等しく設定されているauthors.name
フィールド。
最後に、クエリ発見した場合 、一致比較、レコード が存在しない、私たちが代わりに行います INSERT
。
問い合わせが何も存在しないことがわかった場合は最後に、一致するレコードの比較、我々が実行されますINSERT
。
一致しないTHEN
INSERT
(books.author_id、books.primary_author)
VALUES
(authors.id、authors.name)
ここでは、単純にSQLを求めている INSERT
に新しいレコード books
のテーブルとの値に沿って通過する author_id
と primary_author
、関連するからつかんフィールド、 authors
テーブルレコード。
ここでは、我々は単にSQLを必要としますINSERT
に新しいレコードを挿入しbooks
、テーブル、および送信するには、関連テーブルのレコードから取得author_id
し、 primary_author
フィールドの値authors
。
私たちの最終的な結果 MERGE
ステートメントがためということで 、すべて では著者 authors
テーブル、我々は、対応する本が中に存在するかどうかを確認します books
。
MERGE
テーブルのために、文の最終結果それぞれの著者authors
、私たちは持っているが、対応する本があることを確認しbooks
に。
レコードが見つかった場合、我々は確実に books.primary_author
使用して設定され UPDATE
、かつ一致が見つからなかった場合には、我々は新しいレコードを追加します books
。
レコードが見つかった場合、我々は確認してbooks.primary_author
セットを使用してUPDATE
、一致が存在しない場合に発見され、私たちは、新しいレコードを追加する必要がありますbooks
。
それによって、あなたがすべき 固体理解してい に使用することができる2つの異なる方法の UPDATE
二次、比較使用してSQLのレコード SELECT
文を。
このように、あなたは使うべきUPDATE
二次比較SELECT
に記録されているSQL文の2種類の方法-depth理解を。
オリジナル:
https://chartio.com/resources/tutorials/how-to-update-from-select-in-sql-server/
侵害が私達に連絡してください場合は、世界でのコードによって翻訳この記事は、不正確さが、正しい私にしてください。
コードと世界 | 興味深い公共の数プレス、2次元コード認識、利息