这是我对S.O.的第一个问题。所以请原谅高贵。我也不是因为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的ID号与上面URl末尾的数字相匹配。该表中还有 afflink 列,其中包含我需要的URL(它是该字段中唯一的内容)。
我需要做的是将 post_content 中的整个第一个网址替换为相应 afflink 行中的网址。
非常感谢任何/所有建议。
编辑:
例如,目前 post_content 列包含该行的帖子文本。它可以是几千个字符长,但在它内部将是1,或上面有synatx的一些URL,通常在一个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替换第一个URL。
我不知道用什么SQL语法来构造查询我抱歉:(
答案 0 :(得分: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
答案 1 :(得分: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。