1

私は頻繁に mysql を使用するわけではありませんが、作業を完了するのに十分なコマンドを知っています。

私は3つのフィールドを持つテーブルを持っていますUnique_Key, Number_cnt, Total_number.

テーブルには一意のキーと番号が入力されていますが、合計数は空白のままです。テーブルがこのように見えるとします。

A | 10 | NULL
A | 25 | NULL
A | 33 | NULL
B | 13 | NULL
D | 11 | NULL
D | 22 | NULL

一意のキーでグループ化された数値の合計で最後の列を更新する SQL 方法はありますか。

次のようなエンドテーブル:

A | 10 | 68
A | 25 | 68
A | 33 | 68
B | 13 | 13
D | 11 | 33
D | 22 | 33

結果を生成するためのクエリを知っています

select unique_key,sum(number_cnt) from mTable group by unique_key;

私が探しているのは、列を自動で埋める方法です。

ありがとう !

4

2 に答える 2

2

したがって、まず、列名に Unique という単語を使用して、Unique ではないデータを説明することは避けます。

第二に、これはその場で簡単に計算できます(これにより、単一の行を更新/挿入するたびにテーブル内の複数のレコードを更新する必要がなくなります):

SELECT a.Unique_Key, Number_cnt, Total_number
FROM mTable AS a
LEFT JOIN (
  SELECT Unique_Key, sum( Number_cnt) AS Total_number
  FROM mTable 
  GROUP BY Unique_Key
) AS b ON a.Unique_Key= b.Unique_Key

最後に、これを行う必要がある場合は、次のクエリが機能するはずです。

UPDATE mTable AS a
INNER JOIN (
  SELECT Unique_Key, SUM(Number_cnt) as sum_count 
  FROM mTable GROUP BY Unique_Key) AS b 
ON a.Unique_Key=b.Unique_Key
SET a.Total_number=sum_count 

(他のいくつかの回答で示唆されているように、where 句で元のテーブルを使用すると、1093 エラーがスローされます - MySQL エラー 1093 - FROM 句で更新するターゲット テーブルを指定できません を参照してください)

于 2013-10-18T11:16:41.167 に答える
0

テスト済み、動作中:

UPDATE mTable AS t1
INNER JOIN (
  SELECT Unique_Key, SUM(Number_cnt) AS Sum_count 
  FROM mTable
  GROUP BY Unique_Key) AS t2 
ON (t1.Unique_Key = t2.Unique_Key)
SET t1.Total_number = Sum_count 
于 2013-10-18T11:07:36.333 に答える