このクエリは、バージョン 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 でクエリを動作させる方法は?
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