2013-08-04 106 views
-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上工作?

+1

什麼是錯誤? –

+0

'0 rows affected' – user1538524

+0

確定您的子查詢返回的結果與'user_id'字段中的結果不同嗎? – siride

回答

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) 
+0

它不起作用 – user1538524

+0

@ user1538524你說「它不工作」。但究竟是什麼問題?錯誤消息?它不會按照你的意願更新該行?爲了獲得更準確的答案,也許你應該編輯你的問題來解釋*什麼*查詢*應該*和*如何*失敗? –

+0

此查詢不起作用'0 rows affected' – user1538524

0

使用加入

Update furni T1 
    INNER JOIN furni_items T2 
    ON T2.item_id = T1.id 
    Set T1.user_id = T2.user_id ; 
+0

它不起作用 – user1538524

0

我猜有些SQL工作方式不同的相關更新。試試這個沒有連接語法,而是通過where子句。

Update furni t1, furni_items t2 
    Set t1.user_id = t2.user_id 
    Where t1.id = t2.item_id 
+0

#1054 - '字段列表'中的未知列't1.user_id' – user1538524

+0

@ user1538524,我能想到的唯一的事情是它是區分大小寫的T1 vs vs t1 ...我從iPad上回答。至於查詢的其餘部分,列名與您原始查詢中的列名相同。 – DRapp