2011-10-05 62 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;