ホームページ >データベース >mysql チュートリアル >SQL を使用して別のテーブルの合計でテーブル フィールドを更新するにはどうすればよいですか?

SQL を使用して別のテーブルの合計でテーブル フィールドを更新するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-22 19:23:11605ブラウズ

How to Update a Table Field with the Sum from Another Table Using SQL?

集計関数を使用した SQL 更新クエリ

この質問では、SQL 更新クエリでの集計関数の使用方法について説明します。ユーザーは、別のテーブルの値の合計を使用してテーブル内のフィールドを更新しようとします。ただし、構文上の問題により、クエリは機能しません。

分析

ユーザーが提示した最初のクエリには、2 つの主な欠陥があります:

  1. SET 句と GROUP BY 句の混合: SET は GROUP BY をサポートせず、その逆もサポートしません同様です。
  2. SET 句での集計関数 (SUM) の直接使用: SET は、集計ではなく単一の値を期待します。

解決策

これらの問題を解決するには、サブクエリを使用する必要があります。サブクエリは、共通フィールドごとにグループ化して、2 番目のテーブルの値の合計を計算します。このサブクエリの結果は最初のテーブルと結合され、それに応じてフィールドを更新するために使用されます。

正しいクエリ:

UPDATE t1
SET t1.field1 = t2.field2Sum
FROM table1 t1
INNER JOIN (select field3, sum(field2) as field2Sum
   from table2
  group by field3) as t2
on t2.field3 = t1.field3

このクエリ内:

  • サブクエリは、field3 の一意の値ごとに table2 の field2 の合計を計算します。
  • 外部クエリfield3 フィールドを使用して table1 とサブクエリ結果を結合します。
  • table1 の field1 は、サブクエリで計算された field2Sum で更新されます。

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

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