1

我必须在这样的表中插入很多行basic_data

basic_data
客户 | 最大销售 | 总销售额

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_sale) 和 (customer, total_sales) 时,我想知道是否可以填充表格,以便一个客户只有一行具有值max_saletotal_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 回答