【问题标题】:Query to update data in MYSQL database, search in table 1 , update in table 2, how?查询更新MYSQL数据库中的数据,在表1中搜索,在表2中更新,如何?
【发布时间】:2017-11-17 19:42:29
【问题描述】:

我正在尝试弄清楚如何快速更改大型 wordpress 数据库中的某些内容,通过 GUI 完成需要很长时间,我认为在数据库上执行此直接操作会更有效率,因为它是一次性的。

我有以下表格:

wp_posts
--------
ID
post_status

wp_termrelationships
--------------------
object_id
term_taxonomy_id

如果与 term_taxonomy_id 匹配,我需要执行一个 mysql 查询,在 wp_termrelationships 表中查找 term_taxonomy_id '8232' 8232' 然后获取该匹配的 object_id 并使用该数据在表 wp_postsID 中搜索匹配。当在表 wp_postsID 中找到匹配项时,将每个帖子的 post_status 更新为“发布”

除了 wp_posts 表中的 post_status 之外,没有任何更改。

对我来说,这个查询非常复杂,有什么想法吗?

【问题讨论】:

  • 所以表“wp_posts”没有列“term_taxonomy_id”?那么“wp_termrelationships”表中的哪一列包含对“wp_posts”表的引用?
  • 你说得对,忘了它必须是两者之间的参考,我已经更新了我的主要帖子以更好地解释,希望对您有所帮助?
  • 哇,请编辑问题并使用块代码来描述您的表格,并将文本与代码分开。现在它看起来像胡言乱语。执行此操作时,请查看编辑窗口右侧的编辑工具帮助。如果您发现问题的格式很奇怪,请想象一下问题中没有上下文的情况。
  • 对不起,我现在更新得更清楚了

标签: mysql database wordpress


【解决方案1】:

让我们解构您的需求,并构建查询:

我需要执行一个 mysql 查询,在 wp_termrelationships 表中查找 term_taxonomy_id '8232'

SELECT object_id
FROM wp_termrelationships
WHERE term_taxonomy_id = 8232


如果 term_taxonomy_id '8232' 有匹配项,则获取该匹配项的 object_id 并使用它在表 wp_posts 列 ID 中搜索从 object_id 中的匹配项中获得的数据

这里我使用了一个子查询:

SELECT *
FROM wp_posts
WHERE ID IN (SELECT object_id
             FROM wp_termrelationships
             WHERE term_taxonomy_id = 8232)


当找到这些匹配项时,将表 wp_posts 中每个匹配帖子的 post_status 更新为“发布”

UPDATE wp_posts
SET post_status = 'publish'
WHERE ID IN (SELECT object_id
             FROM wp_termrelationships
             WHERE term_taxonomy_id = 8232)

这里我想当然地认为 term_taxonomy_id 是一个整数。

【讨论】:

  • 这可能会问得太多,因为它可能会脱离主题,但是如果我想在运行它之前测试这个查询,将“UPDATE”改为 SELECT 就足够了吗?跨度>
  • 是的,第二个SELECT * 就是这样做的。
  • 运行选择查询时出错:*/ SQL 错误 (1242): 子查询返回超过 1 行 */ ** 什么会导致此问题?预计会有多行!
  • @Nic3500 :: 不错的答案!非常翔实和完整。干得好。
  • 测试查询返回了我正在寻找的值,我认为可以标记为已解决,非常感谢您的丰富经验和帮助@Nic3500
猜你喜欢
  • 2016-09-15
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
  • 2023-02-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多