0
UPDATE wp_postmeta
set meta_value = 'a:1:{i:0;s:6:"Subbed";}' 
WHERE meta_key = 'episode_sdversion'

这基本上是我能走多远。这只是意味着我想更新wp_postmeta表并将列设置meta_value为何a:1:{i:0;s:6:"Subbed";}meta_key可以episode_sdversion

这是问题所在,我想检索另一个 WHERE 子句。但是要获得“WHERE”,我需要从多个表中检索信息。

name从具有第一个单词“ Subbed”的表 wp_terms 列中,我从 term_id 列中获取 ID。所以我想这会像这样工作

SELECT term_id
FROM  `wp_terms` 
WHERE  `name` LIKE  '%Subbed %'

然后使用您刚刚在表中检索到的 term_id 值wp_term_relationships 并检查它是否等于列中的值,term_taxonomy_id然后检查object_id列 WHERE中的值term_taxonomy_id = whatever you just got from before。这object_id将等于我的第二个 WHERE 子句中的post_id列...wp_postmeta

所以我的最终代码看起来与此类似

UPDATE wp_postmeta
set meta_value = 'a:1:{i:0;s:6:"Subbed";}' 
WHERE meta_key = 'episode_sdversion'
AND WHERE post_id = the ID that I am trying to get from going through different tables

我也可以使用...所以只有WHERE meta_value = ''将 meta_value 设置为空白...a:1:{i:0;s:6:"Subbed";}meta_value = ''

因此,如果你们对如何从其他表中获取信息并将其保存在某种变量中然后在最终查询中引用它有任何想法,那会很棒,或者组合多个查询?

4

2 回答 2

0

我同意——你的问题很难理解。如果您可以发布您的表结构、示例数据和所需的输出,这会变得容易得多。

但是,如果我正确理解您的要求,那么这应该很接近:

UPDATE wp_postmeta
SET meta_value = 'a:1:{i:0;s:6:"Subbed";}' 
WHERE meta_key = 'episode_sdversion' AND
    post_id IN (
       SELECT tr.object_id 
       FROM  wp_terms t
          JOIN wp_term_relationships tr ON t.term_id = tr.term_taxonomy_id 
       WHERE  t.name LIKE '%Subbed %'   
   ) AND meta_value = ''

如果我的理解是正确的,这也可能有效:

UPDATE wp_postmeta pm
    JOIN wp_term_relationships tr ON pm.post_id = tr.object_id
    JOIN wp_terms t ON t.term_id = tr.term_taxonomy_id 
SET pm.meta_value = 'a:1:{i:0;s:6:"Subbed";}' 
WHERE pm.meta_key = 'episode_sdversion'
    AND t.name LIKE '%Subbed %' 
    AND meta_value = ''
于 2013-02-28T00:18:07.963 回答
0

这是一种糟糕的方法。如果有人出现并发布了一个纯粹的联合解决方案,请使用它。另外,我几乎无法破译您使用的所有表格,以及您到底想做什么,这是我阅读您的想法的最大努力。

UPDATE wp_postmeta
set meta_value = 'a:1:blahblbah'
WHERE meta_key='episode_sdversion'
  AND post_id in(SELECT post_id FROM wp_terms WHERE name like '%Subbed%');

您有一个看起来需要在子查询中完成的连接,但是从您的帖子中我无法分辨那是什么。如果您无法从这里弄清楚,请发布有关另一张桌子的更多信息,但它会像:

UPDATE wp_postmeta
set meta_value = 'a:1:blahblbah'
WHERE meta_key='episode_sdversion'
  AND post_id in(SELECT post_id
    FROM wp_terms 
    JOIN OTHERTABLE on OTHERTABLE.PK=wp_terms.PK
    WHERE name like '%Subbed%' and OTHERTABLE.WhateverColumn='whatevervalue');

鉴于信息,这是我能做的最好的事情。享受。

于 2013-02-28T00:09:29.407 回答