【发布时间】:2011-11-26 06:09:34
【问题描述】:
我有两个大表,products(500k 记录)和 store_products(> 3mm 记录)。 Products 是 master,product_stores 是产品的各个位置。
我需要运行一个查询来汇总来自 product_stores 的信息并更新相应的产品。
当这是较小的数据集时,我们使用嵌套查询:
SELECT productid,COUNT(id) as count,MIN(price) as lowprice,MAX(price) as highprice FROM store_products
WHILE (productid){ update product set stores = count, min = lowprice, max = highprice WHERE productid = $productid }
GROUP BY productid
我对嵌套更新还很陌生,不确定如何使用连接和分组设置多个字段。
结构[截断到相关字段]:
CREATE TABLE product (
product_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
stores INT UNSIGNED NOT NULL DEFAULT '0',
lowprice DECIMAL (6,2) NOT NULL DEFAULT '000.00',
highprice DECIMAL (6,2) NOT NULL DEFAULT '000.00',
PRIMARY KEY (product_id),
KEY stores (stores)
)
CREATE TABLE store_product (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
product_id INT UNSIGNED NOT NULL,
price DECIMAL(7,2) NOT NULL DEFAULT '0.00',
PRIMARY KEY (storeproduct_id),
KEY product_id (product_id)
);
要更新的字段:
- 商店 [按 productid 的 store_product 记录计数]
- 最低价格[按productid的最低价格]
- 最高价格 [按 productid 划分的最高价格]
【问题讨论】:
-
Here's an example 了解如何使用 UPDATE 连接。