2014-09-25 56 views
0

我有一個查詢返回根據所選數據更新

主鍵|值

而且我想更新我的數據,其中主鍵=主鍵和值=另一個值。所以基本上我有

SELECT 
    id, 
    custom_value 
FROM custom 
JOIN user 
USING (user_id) 
WHERE id = 45 
AND custom_name = "stuff"; 

這產生

id | custom_value 
1 | stuff 
2 | stuff 2 

而且我想,然後更新與

UPDATE table SET field = custom_value WHERE id = id; 

現有的數據庫或者,如果我使用的第一行這將是

UPDATE table SET field = 'stuff' WHERE id = 1; 

我該怎麼辦這個?

所以......

SELECT       UPDATE table 
    id,    ->  WHERE id = id 
    custom_value  ->  SET field = custom_value 
FROM custom 
JOIN user 
USING (user_id) 
WHERE id = 45 
AND custom_name = "stuff"; 

選擇數據然後更新與數據的另一個表。

+0

現有的db?上面的查詢是否來自不同的數據庫,或者您是否想根據其他值更新其中一個表? – 2014-09-25 16:09:33

+0

我想根據其他值更新另一個表。 – Steven 2014-09-25 16:11:14

+0

如果我正確地理解你,這個答案應該有所幫助:http://stackoverflow.com/questions/11588710/mysql-update-query-with-sub-query – 2014-09-25 16:18:55

回答

0

兩個步驟:

create temporary table tmp_tbl as select .... your select goes here; 

然後

update table, tmp_tbl 
set table.field = tmp_tbl.custom_value 
where table.id = tmp_tbl.id 

,然後,可選,清理不需要的數據:

drop table tmp_tbl 

(或者讓MySQL的自動拖放到會議關閉)。