Обновление SQL одной таблицы на основе условий в другой таблице - PullRequest
12 голосов
/ 16 апреля 2011

Две таблицы.

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

Но как я могусобрать их вместе.

Ответы [ 2 ]

23 голосов
/ 16 апреля 2011

Стандартное решение ANSI SQL (должно работать на любой СУБД)

UPDATE content 
   SET data = 'disabled'
 WHERE topic_id IN (SELECT t.topic_id 
                    FROM topics t
                    WHERE t.content_type = 'rvf')
8 голосов
/ 16 апреля 2011

Это должно работать, если вы используете 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'

Не уверен, применимо ли это в этом случае, но приятно знать, что вы можете ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...