ホームページ >データベース >mysql チュートリアル >SELECT ステートメントの値を使用して SQL Server テーブルを更新するにはどうすればよいですか?

SELECT ステートメントの値を使用して SQL Server テーブルを更新するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-25 05:16:09252ブラウズ

How Can I Update a SQL Server Table Using Values from a SELECT Statement?

SELECT ステートメントからのデータによる SQL Server テーブルの更新

SQL Server では、INSERT...SELECT を使用して行を挿入できます。 ただし、最初に試行する方法 (SELECT など) で UPDATE Table SET col1, col2 SELECT col1, col2... ステートメントを使用してテーブルを直接更新することは無効です。 正しいアプローチには、サブクエリまたは結合の使用が含まれます。

一時テーブルの値を使用してテーブルを更新する必要があるとします。 間違った試行は次のようになります:

<code class="language-sql">UPDATE Table SET col1, col2
SELECT col1, col2 
FROM other_table 
WHERE sql = 'cool'
WHERE Table.id = other_table.id</code>

正しい方法:

1.サブクエリのアプローチ:

このメソッドはサブクエリを使用して更新値を取得します。

<code class="language-sql">UPDATE Table 
SET col1 = (SELECT col1 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id),
    col2 = (SELECT col2 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id)
WHERE EXISTS (SELECT 1 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id)</code>

EXISTS 句により、other_table 内のエントリが一致する行に対してのみ更新が行われるようになります。

2.結合ベースのアプローチ:

このアプローチでは、JOIN を活用してより効率的に更新します。

<code class="language-sql">UPDATE Table_A
SET Table_A.col1 = Table_B.col1,
    Table_A.col2 = Table_B.col2
FROM Some_Table AS Table_A
INNER JOIN Other_Table AS Table_B ON Table_A.id = Table_B.id
WHERE Table_A.col3 = 'cool'</code>

この JOIN は、Table_A 列に基づいて Table_B および id の行と一致し、Table_A.col3 が「cool」に等しい場合にのみ更新を適用します。

サブクエリと結合はどちらも、SELECT ステートメントから派生したデータを使用して SQL Server テーブルを更新する効果的な方法を提供し、データ操作の柔軟性とパフォーマンスを強化します。

以上がSELECT ステートメントの値を使用して SQL Server テーブルを更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。