[解決済み] SQL Server の INSERT INTO SELECT クエリで重複を回避する。
2022-08-15 06:33:40
質問
以下の2つのテーブルがあります。
Table1
----------
ID Name
1 A
2 B
3 C
Table2
----------
ID Name
1 Z
からデータを挿入する必要があります。
Table1
から
Table2
. 次のような構文が使えますね。
INSERT INTO Table2(Id, Name) SELECT Id, Name FROM Table1
しかし、私の場合、重複したIDが
Table2
(といった具合になります(私の場合、ちょうど"
1
")であり、それはエラーを投げるので、私は再びそれをコピーしたくありません。
このように書くことができます。
IF NOT EXISTS(SELECT 1 FROM Table2 WHERE Id=1)
INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1
ELSE
INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 WHERE Table1.Id<>1
を使わずにこれを行う良い方法はありますか?
IF - ELSE
? 私は、2つの
INSERT INTO-SELECT
ステートメントを回避したい。
どのように解決するのですか?
使用方法
NOT EXISTS
:
INSERT INTO TABLE_2
(id, name)
SELECT t1.id,
t1.name
FROM TABLE_1 t1
WHERE NOT EXISTS(SELECT id
FROM TABLE_2 t2
WHERE t2.id = t1.id)
使用方法
NOT IN
:
INSERT INTO TABLE_2
(id, name)
SELECT t1.id,
t1.name
FROM TABLE_1 t1
WHERE t1.id NOT IN (SELECT id
FROM TABLE_2)
使用方法
LEFT JOIN/IS NULL
:
INSERT INTO TABLE_2
(id, name)
SELECT t1.id,
t1.name
FROM TABLE_1 t1
LEFT JOIN TABLE_2 t2 ON t2.id = t1.id
WHERE t2.id IS NULL
3つのオプションのうち
LEFT JOIN/IS NULL
はあまり効率的ではありません。 参照
を参照してください。
.
関連
-
MySQL - ストアドプロシージャ (データ型、関数)
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] SQLでランダムな行を要求する方法は?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MHAの高可用性構成とフェイルオーバー
-
windows mysql prompt access denied for user ''@'localhost' to database.
-
SQL-初心者のためのベスト入門SQLクエリ I
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] 最初の行への結合方法
-
[解決済み] SQLの複数列の順序付け
-
[解決済み] mysqldumpで特定のテーブルをスキップする
-
[解決済み] SQL Server 2008を使用してIDENTITY_INSERTをオン/オフする方法は?