【发布时间】:2013-02-08 06:14:52
【问题描述】:
我必须像这样在表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 和 @ 两个值987654324@.
我的插入查询是:
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。
知道如何以这种方式存储数据吗?非常感谢。
【问题讨论】:
标签: mysql sql key duplicates bulkinsert