2016-07-14 111 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也。