1

次のようにテーブルに多くの行を挿入する必要がありますbasic_data

basic_data
顧客 | max_sale | 総売上高

CREATE TABLE `basic_data` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`customer`  int(11) NOT NULL ,
`total_sales`  decimal(15,2) NOT NULL ,
`max_sale`  tinyint(2) NOT NULL ,
PRIMARY KEY (`id`),
UNIQUE INDEX `customer` USING BTREE (`customer`)
)

異なるクエリで (customer, max_sales) と (customer, total_sales) を取得するので、1 人の顧客が と の両方の値max_saleを持つ 1 つの行だけを持つようにテーブルを埋めることができるかどうかを知りたいですtotal_sales

私の挿入クエリは次のとおりです。

INSERT INTO 
basic_data (customer, max_sale)
SELECT a.customer, a.max_sale
FROM sales a
 ....
GROUP BY customer;


INSERT INTO
basic_data (customer,total_value)
SELECT customer, SUM(sales) total_value
FROM sales a
GROUP BY customer;

そして、私は使用ON DUPLICATE KEY UPDATEできるが、それを適切に使用することができないと読みました.

私の試み

INSERT INTO
basic_data (customer,total_value)
SELECT customer, SUM(sales) total_value
FROM sales a
GROUP BY customer
ON DUPLICATE KEY person UPDATE total_value = ...

ON DUPLICATE KEYでうまくいかないためだと思いますGROUP BY

この方法でデータを保存する方法はありますか? 本当にありがとう。

4

1 に答える 1

1

更新 1

INSERT INTO basic_data (customer,total_value)
SELECT customer, total_value
FROM
(
    SELECT customer, SUM(sales) total_value
    FROM   sales a
    GROUP  BY customer
) c
ON DUPLICATE KEY UPDATE total_value = c.total_value
于 2013-02-22T15:34:02.757 に答える