2011-10-05 66 views
1

我有一個與下面的正確輸出工作的選擇查詢:MYSQL Update語句 - 未知列

enter image description here

我想創建一個更新語句設置despgoods_alldetails.loadid列的值= loaddetails.loadid where despgoods_alldetails_despgoodsid = loaddetails.despgoodsid.loadid。

我正沿

update despgoods_alldetails set despgoods_alldetails.loadid = loaddetails.loadid where despgoods_alldetails.despgoodsid=loaddetails.despgoodsid

該查詢線路思考失敗,下面的錯誤: enter image description here

任何想法我怎麼能得到這個更新語句工作?

感謝, 瑞安

回答

1

幾乎有了它,你只需要對第二個表的引用。

UPDATE despgoods_alldetails, loaddetails 
    SET despgoods_alldetails.loadid = loaddetails.loadid 
    WHERE despgoods_alldetails.despgoodsid=loaddetails.despgoodsid 
+0

更新語句不能更新多個表(至少不是我已經使用的任何實現) – Mac

+0

@Mac他們可以在MySQL中。請參閱[UPDATE文檔](http://dev.mysql.com/doc/refman/5.0/en/update.html)。 –

+0

我糾正了。檢查出。儘管如此,子查詢更便於攜帶。 – Mac

1

loaddetails是從您嘗試更新的一個一個單獨的表。這不能直接在SQL更新中完成。您需要像這樣的子選擇:

update despgoods_alldetails 
set despgoods_alldetails.loadid = (
    select loaddetails.loadid 
    from loaddetails 
    where despgoods_alldetails.despgoodsid=loaddetails.despgoodsid 
) 
+0

@Mac在一個簡單的例子,謝謝即時響應。通過子選擇我是否必須將我的select語句嵌入到update語句中?有什麼機會可以爲我進一步闡述或提供示例查詢?謝謝,R – Smudger

+0

@RyanSmith剛剛做到了。這被稱爲「相關子查詢」,因爲它引用了外部語句中的列。 – Mac

+0

感謝Mac,工作完美。 @Joe Stefanelli語法也是100%。再次感謝,apreciate幫助。 – Smudger

0
update 
    despgoods_alldetails as da 
join 
    loaddetails as l 
using 
    (despgoodsid) 
set 
    da.loadid = l.loadid; 
1

你需要把兩個表這樣

update despgoods_alldetails, loaddetails set despgoods_alldetails.loadid =  loaddetails.loadid where despgoods_alldetails.despgoodsid=loaddetails.despgoodsid 

更新條款後,您可以發現,在這個頁面http://dev.mysql.com/doc/refman/5.0/en/update.html

UPDATE items,month SET items.price=month.price WHERE items.id=month.id;