次のようにテーブルに多くの行を挿入する必要があります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
。
この方法でデータを保存する方法はありますか? 本当にありがとう。