我必须在这样的表中插入很多行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_sale
和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
.
知道如何以这种方式存储数据吗?非常感谢。