从多个表中获取数据来更新列

问题描述:

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_keyepisode_sdversion这很好。从多个表中获取数据来更新列

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

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

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

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

所以我的最终代码将类似于此

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 = ''空白......

所以,如果你们有关于如何从其他表获取信息,并保持它在某种变量,然后引用它的任何想法在你的最终查询中,t帽子会很棒,还是结合多个查询?

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

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'); 

这是考虑到信息,我能做到的最好。请享用。

我同意 - 你的问题很难理解。如果你可以发布你的表格结构,样本数据和所需的输出,这将使它更容易。

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

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 = ''