此查询不适用于 5.1 版的 MySQL,但在最新版本的 MySQL (5.5) 上可以使用。
Update furni T1 Set T1.user_id = (SELECT T2.user_id FROM furni_items T2 where T2.item_id = T1.id) ;
如何使查询在 MySQL 5.1 上工作?
一种猜测是子查询可能返回多行。你可以通过使用limit
来解决这个问题,只得到 1:
Update furni T1
Set T1.user_id = (SELECT T2.user_id FROM furni_items T2 where T2.item_id = T1.id limit 1)
使用连接
Update furni T1
INNER JOIN furni_items T2
ON T2.item_id = T1.id
Set T1.user_id = T2.user_id ;
我猜一些 SQL 在相关更新上的工作方式不同。在没有连接语法的情况下尝试这个,而是通过 where 子句。
Update furni t1, furni_items t2
Set t1.user_id = t2.user_id
Where t1.id = t2.item_id