【发布时间】:2012-02-26 16:25:32
【问题描述】:
请帮忙。我正在尝试使用我们产品拥有的当前资产数量来更新这张表。如果产品已经存在于表中,它应该更新产品的最新计数。但是,使用下面的查询,mysql 正在返回我
“ERROR 1111 (HY000): 组函数使用无效”。
我无法确定我的错误是什么,或者在“重复键”函数中使用计数是否真的有效:
INSERT INTO report_count_assets
SELECT products.product_id,
count(product_assets.asset_id),
count(case when assets.asset_type_id=1 THEN 1 END),
count(case when assets.asset_type_id=2 THEN 1 END),
count(case when assets.asset_type_id=3 THEN 1 END),
count(case when assets.asset_type_id=11 THEN 1 END)
FROM products
LEFT JOIN product_assets USING (product_id)
LEFT JOIN assets USING (asset_id)
WHERE products.brand_id=671
ON DUPLICATE KEY UPDATE
asset_count = count(product_assets.asset_id),
asset_type_image = count(case when assets.asset_type_id=1 THEN 1 END),
asset_type_video = count(case when assets.asset_type_id=2 THEN 1 END),
asset_type_sound = count(case when assets.asset_type_id=3 THEN 1 END),
asset_type_install = count(case when assets.asset_type_id=11 THEN 1 END);
【问题讨论】:
-
这个Question可以帮助你
-
嗨@diEcho,我并不是特别在寻找哪些产品的资产中有这些特定数字。我担心的是当产品已经存在于表中时查询的更新部分。我不知道如何在 'ON DUPLICATE KEY UPDATE' 上实现 select-join 查询