2015-10-04 99 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