这是我向 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 号与上面 URl 末尾的数字相匹配。该表中还有列 afflink,其中包含我需要的 URL(它是该字段中的唯一内容)。
我需要做的是将 post_content 中的整个第一个 URL 替换为相应 afflink 行中的 URL。
非常感谢任何/所有建议。
编辑:
例如,当前 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 语法来构造查询,抱歉:(
最佳答案
不确定 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
关于php - SQL 更新另一个表中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38370625/