我有一个执行UPSERT的查询(插入 - 但如果存在,则更新)。
MySQL抱怨它不是有效的,这是查询:
insert into
mytable (user_id, num_products_observed, num_purchased_percent)
(select
A.user_id,
B.total 'num_products_observed',
case
when A.purchased is null then 0
else A.purchased/B.total
end 'num_purchased_percent'
from
(select user_id, count(prod_observed) 'total' from products where user_id = ? ) B
left join (select user_id, count(prod_purch) 'purchased' from products_purchased) A on B.user_id = A.user_id
) newsum -- <--- ISSUE IS HERE
ON DUPLICATE KEY UPDATE
num_products_observed = newsum.num_products_observed,
num_purchased_percent = newsum.num_purchased_percent
我希望这对你有意义。问题出在) newsum
行。 MySql抱怨我给表的别名。 user_id在此表中是唯一的(mytable
)。
有可能B.total为null,在这种情况下,newsum中的所有内容都为null - 这很好,然后我不想插入或更新任何内容(或者更新所有内容的user_id和0)也没关系。)
对我做错了什么的任何想法?感谢
答案 0 :(得分:0)
您是否尝试使用VALUES语句。
您可以使用UPDATE子句中的VALUES(col_name)函数来引用INSERT ... ON DUPLICATE KEY UPDATE语句的INSERT部分中的列值