2015-10-04 97 views
0

更新表我有这样SQL:与选择

UPDATE t_prd_cost_compare 
SET 
    2015_AUG_PRD_UNIT_PRICE=i.PRD_UNIT_PRICE, 
    2015_AUG_PRD_SELLING_PRICE=i.PRD_SELLING_PRICE, 
    2015_AUG_PRD_IN_PATIENT_LIST_PRICE=i.PRD_IN_PATIENT_LIST_PRICE, 
    2015_AUG_PRD_OUT_PATIENT_LIST_PRICE=i.PRD_OUT_PATIENT_LIST_PRICE 
FROM (
    SELECT PRODUCTID,PRD_UNIT_PRICE,PRD_SELLING_PRICE,PRD_IN_PATIENT_LIST_PRICE,PRD_OUT_PATIENT_LIST_PRICE 
    FROM t_product_catalog 
    LEFT JOIN T_adjust ON IAJ_PRODUCTID=PRODUCTID AND IAJ_ADJNO IS NULL 
    WHERE PRODUCTID>1 AND (DATE(IAJ_DATE) = '2015-01-01') 
    GROUP BY IAJ_PRODUCTID 
    ) AS i 
WHERE i.PRODUCTID = t_prd_cost_compare.PRODUCTID 

查询我得到错误这样

错误代码:1064
您的SQL语法错误;检查对应于你的MySQL服务器版本的线条“( SELECT PRODUCTID,PRD_UNIT_PRICE,PRD_SELLING_PRICE,PRD_IN_PATIENT_LIST_PRI”附近使用正确的语法手册7

我做了检查select语句是正确的,但我!?仍然得到错误

任何想法

+2

UPDATE语句中没有FROM。尝试使用JOIN代替。 –

+0

一个好的经验法则:如果没有聚合,并且你不知道自己在做什么,请不要使用GROUP BY – Strawberry

回答

2

问题解决了,这里是解决方案

Update 
    Competition as C 
    inner join (
    select CompetitionId, count(*) as NumberOfTeams 
    from PicksPoints as p 
    where UserCompetitionID is not NULL 
    group by CompetitionID 
) as A on C.CompetitionID = A.CompetitionID 
set C.NumberOfTeams = A.NumberOfTeams 

从指:mysql update query with sub query

+1

我不认为我们可以猜到* this *这个答案来自* that *问题,但无论如何我们都会完成它 – Strawberry