0

我看到最后一行有错误。有人可以告诉我有什么替代方法吗?

INSERT INTO month_week_qty 
(
    site_id, cat_id, cat_name, scat_id, scat_name, sscat_id, sscat_name, duration, w_m, year, sum_qty
) 
SELECT 
    c.site_id, NULL, NULL, NULL, NULL, NULL, NULL, 'month', MONTH(s.created_at), YEAR(s.created_at), ROUND( SUM( s.qty_ordered ) ) as qty 
FROM cat_products c, sku_qty_brand s
WHERE (c.product_id = s.product_id)
GROUP BY c.site_id, MONTH(s.created_at)
ON DUPLICATE KEY UPDATE sum_qty = sum_qty + ROUND( SUM( s.qty_ordered ) )
4

1 回答 1

4

您不能在ON DUPLICATE KEY UPDATE子句中使用聚合,但可以将分组聚合放在子查询中:

INSERT INTO month_week_qty 
(
    site_id, duration, w_m, year, sum_qty
) 
SELECT 
    site_id, duration, w_m, year, qty
FROM (
    SELECT 
        c.site_id, 'month' AS duration, MONTH(s.created_at) AS w_m, YEAR(s.created_at) AS year, ROUND( SUM( s.qty_ordered ) ) as qty 
    FROM cat_products c, sku_qty_brand s
    WHERE (c.product_id = s.product_id)
    GROUP BY c.site_id, MONTH(s.created_at)
) AS t
ON DUPLICATE KEY UPDATE sum_qty = sum_qty + t.qty

(为了清楚起见,我省略了 NULL 列。)

于 2012-08-16T08:48:53.520 回答