ホームページ >データベース >mysql チュートリアル >SELECT ステートメントの値を使用して SQL Server テーブルを更新するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。