#sql #sql-update
#sql #sql-обновление
Вопрос:
Две таблицы.
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");
Но как я могу собрать их вместе.
Ответ №1:
Стандартное решение ANSI SQL (должно работать на любой СУБД)
UPDATE content
SET data = 'disabled'
WHERE topic_id IN (SELECT t.topic_id
FROM topics t
WHERE t.content_type = 'rvf')
Комментарии:
1. Спасибо, сработало отлично. Это было в SQLite, забыл упомянуть об этом.
Ответ №2:
Это должно сработать, если вы используете 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'
Не уверен, применимо ли это в данном случае, но приятно знать, что вы можете…
Комментарии:
1. Не отсутствует ли условие для
content_type = 'rvf'