web-dev-qa-db-ja.com

SQL別のテーブルの条件に基づいて1つのテーブルを更新する

2つのテーブル。

_Content (table),
   topic_id (primary key),
   data (text)

Topics (table),
   topic_id (primary key),
   content_type (text)
_

両方のテーブルに同じ主キーデータ(topic_id)があります。

「無効」というテキストでデータフィールド(コンテンツテーブル)を更新する必要がありますが、content_typeフィールド(トピックテーブル)=テキスト「rvf」の場合のみ

できること:_SELECT * from topics WHERE content_type = "rvf";_

できること:UPDATE content SET data = ("disabled");

しかし、どうすればそれらを組み合わせることができますか。

13
Josh Bond

標準ANSI SQLソリューション(どのDBMSでも動作するはずです)

UPDATE content 
   SET data = 'disabled'
 WHERE topic_id IN (SELECT t.topic_id 
                    FROM topics t
                    WHERE t.content_type = 'rvf')
27

SQL Serverを使用している場合、これは機能するはずです。

UPDATE content 
SET data = 'disabled'
FROM content
INNER JOIN topics
on content.topic_id = topics.topic_id
WHERE content_type = 'rvf'

次のようにして、トピックの値でコンテンツを更新することもできます。

UPDATE content 
SET content.data = topics.content_type
FROM content
INNER JOIN topics
on content.topic_id = topics.topic_id
WHERE content_type = 'rvf'

この場合に当てはまるかどうかはわかりませんが、できることを知っておくとよいでしょう...

8
Abe Miessler