2013-03-27 125 views
1

我需要根據另一個表中的值更新列。從另一個選擇MySQL更新

這個SELECT語句產生的結果,我需要

select ct.entry_id, ct.url_title, ct.title 
from exp_channel_titles ct, exp_channel_data cd 
where ct.channel_id = 1 
and cd.channel_id = 2 
and ct.title = cd.field_id_2 
and ct.status = 'open' 

但我插入列在屬於該格式的數據:

[entry_id] [url_title] title 

,所以我的INSERT語句看起來像

update exp_channel_data 
set field_id_1 = ([1234] [page-title] Page Title) 
where... 

所以我如何格式化我的選擇語句,以便它輸出的數據與[]和空間?

回答

2

您可以使用INNER UPDATE查詢中的JOIN,給像

UPDATE exp_channel_data cd 
INNER JOIN exp_channel_titles ct 
    ON ct.title = cd.field_id_2 
    AND ct.channel_id = 1 
    AND ct.status = 'open' 

SET cd.field_id_1 = CONCAT('[',ct.entry_id,'] [',ct.url_title,'] ',ct.title) 

WHERE cd.channel_id = 2 
+0

真棒,謝謝。 :) – Tyssen 2013-03-27 12:17:26

1

使用CONCAT

SELECT CONCAT('[', ct.entry_id, '] [', ct.url_title, '] ', ct.title)