2016-07-14 115 views
0

這是我第一個問題S.O.所以請原諒這種不禮貌。我也沒有與SQL崩潰熱,所以我很欣賞任何意見。SQL更新文本從另一個表

我有表wp_6_posts已列名爲POST_CONTENT和各種行該列是一個文本字符串格式:

http://www.domain.com/52 
http://www.domain.com/182 
http://www.domain.com/122 

在另一臺wp_6_pmlca_links有ID爲行與上面URl末尾的數字相匹配的數字。在該表中還有專欄,其中包含我需要的URL(它是該字段中的唯一內容)。

我需要做的是從相應afflink行的網址替換整個第一URL中POST_CONTENT

任何/所有的建議非常感謝。

編輯:

例如,目前POST_CONTENT列包含後該行的文本。它可以是幾千個字符長,但在它可以是1,或多個URL與上述synatx,通常在href標記:

Text here to <a href="http://www.domain.com/23">Text for link</a> 

對應數量的URL的鏈接存儲在一個單獨的表中,如上所述。該行結構爲:

ID | slug | URL | 
---------------- 
23 | 23 | http://www.externaldomain.com/link | 

我需要做的是找出第一個URL,查詢找到相應的URL和替換第二第一URL。

我不知道用什麼SQL語法構造查詢對不起:(

+1

認罪舉例說明。 (樣本輸入和預期輸出)。還共享相關表的表結構。 – 1000111

+0

域名將保持不變或還有什麼? –

+0

是的域將保持不變@yatinparab –

回答

0

不知道關於你的wp_6_pmlca_links數據,但嘗試這種(對MySQL):

UPDATE wp_6_posts t1 
JOIN wp_6_pmlca_links t2 
ON t2.ID = substring_index(t1.post_content, '/', -1) 
// For sql server, 'substring_index(t1.post_content, '/', -1)' should be 'right(t1.post_content, len(t1.post_content) - charindex(replace(t1.post_content, '//', '$$'), '/'))' 
SET t1.post_content = t2.afflink 
0

試試這個但此查詢用SQL寫。

update a 
set a.post_content =b.URL 
from wp_6_posts a 
inner join wp_6_pmlca_links b on convert(int,replace(a.post_content,'http://www.domain.com/',''))=b.id 

這將適用於MySQL也。