此查詢不適用於版本爲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上工作?
此查詢不適用於版本爲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)
它不起作用 – user1538524
@ user1538524你說「它不工作」。但究竟是什麼問題?錯誤消息?它不會按照你的意願更新該行?爲了獲得更準確的答案,也許你應該編輯你的問題來解釋*什麼*查詢*應該*和*如何*失敗? –
此查詢不起作用'0 rows affected' – user1538524
使用加入
Update furni T1
INNER JOIN furni_items T2
ON T2.item_id = T1.id
Set T1.user_id = T2.user_id ;
它不起作用 – user1538524
我猜有些SQL工作方式不同的相關更新。試試這個沒有連接語法,而是通過where子句。
Update furni t1, furni_items t2
Set t1.user_id = t2.user_id
Where t1.id = t2.item_id
#1054 - '字段列表'中的未知列't1.user_id' – user1538524
@ user1538524,我能想到的唯一的事情是它是區分大小寫的T1 vs vs t1 ...我從iPad上回答。至於查詢的其餘部分,列名與您原始查詢中的列名相同。 – DRapp
什麼是錯誤? –
'0 rows affected' – user1538524
確定您的子查詢返回的結果與'user_id'字段中的結果不同嗎? – siride