php - SQL 更新另一个表中的文本

标签 php mysql sql-server wordpress

这是我向 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/

相关文章:

PHP 邮件发送不出去,我该如何调试?

php - 使用本地 htaccess 文件 (Apache) 实现内容安全策略

php - 无法识别的日期格式

php - 存储非标准数据的最佳性能方式

PHP Pear——缺少 'MDB2\Driver\mysql.php'

sql - View 优化

php - php中的for循环和foreach循环有什么区别

mysql - 如何将单独的记录合并为一个?

sql-server - 要在 SQL Server Data Tools 之外运行 SSIS 包,您必须安装 Integration Services 标准版或更高版本

sql-server - SELECT 返回 DataRow 两次