2011-04-15 18 views
0

WordpressデータベースでSQLコマンドを実行しようとしています。 wp_6_postsテーブルのpost-statusカラムの特定のエントリを値"trash"で更新したいとします。私が更新したいエントリは、テーブルwp_6_term_relationshipsのエントリで、term_taxonomy_id = 13です。別のWordpress SQLテーブルを更新する

これらのすべての一致については、object_id from wp_6_termの関係を使用してIDの列wp_6_postsに一致させたいと考えています。

IDの値がテーブルのobject_idの値に一致するローのwp_6_posts行だけを更新したいとします。

これは私が近づいたところですが、の値はすべてwp_6_postsから"trash"に設定されています。私はちょうど構文や論理のビットをオフに知っている。

UPDATE wp_6_posts 
SET post_status = "trash" 
WHERE EXISTS 
    (SELECT object_id 
    FROM wp_6_term_relationships 
    WHERE term_taxonomy_id = "13" 
    AND object_id = ID 
) 

答えて

1
UPDATE wp_6_posts 
SET post_status = "trash" 
WHERE id IN 
    (SELECT object_id 
    FROM wp_6_term_relationships 
    WHERE term_taxonomy_id = "13" 
) 
+0

これは機能します。本当にありがとう。今では唯一の問題は、いくつかの投稿は、すべて同じカテゴリにあり、1つのワードプレスカテゴリIDで、何らかの理由で異なるterm_taxonomy_idを使用しているようです。ここで私達は再び行きます... – Alan

+0

@Alan: 'WHERE term_taxonomy_id IN(" 13 "、" 21 "、" 34 "、" 55 ")' 13 'を持つ人だけがインストールされています。 –

0

これは、SQLでのよりよい誰かによって私に与えられ、私の作品の答えです。このクエリは、カテゴリID#の代わりにカテゴリslugを使用しています。私はそれを完全には理解していませんが、それは機能します。カテゴリ内のすべての投稿に、 "ゴミ箱"のpost_statusを "売却"します。

update wp_posts set post_status = 'trash' 
where `id` in 
(SELECT object_id 
FROM wp_term_relationships wtr 
JOIN wp_term_taxonomy wtt ON (wtr.term_taxonomy_id = wtt.term_taxonomy_id) 
JOIN wp_terms wt ON (wtt.term_id = wt.term_id) 
WHERE wtt.taxonomy = 'category' 
AND wt.slug = 'sold') 
関連する問題