2012-05-20 2 views
1

Я пытаюсь заменить определенные текстовые строки в нескольких таблицах и полях. У меня есть код для одного поля в одной таблице, но я не хочу дублировать свои усилия (поскольку у меня есть много строк, которые я бы хотел заменить).Заменить текст в нескольких таблицах и полях в MySQL

Вот мой код для одного поля в одной таблице:

UPDATE `phpbb3`.`phpbb_posts` 
SET `post_subject` = REPLACE(`post_subject`,'string-to-be-replaced','replacement-string') 
WHERE (`post_subject` LIKE '%string-to-be-replaced%') 
ORDER BY `phpbb_posts`.`post_time` DESC 

Как написать команду, чтобы заменить текст как на поле phpbb_posts.post_subject и поле phpbb_topics.topic_title?

(мне нужно WHERE или ORDER, так как PhpMyAdmin не показывает результаты в любом случае UPDATE ли?)

+0

Вам не нужно предложение 'ORDER BY', но я не уверен, почему вам не нужно использовать предложение WHERE из-за phpMyAdmin. Запросы 'UPDATE' без предложения WHERE' влияют на * все * строки в таблице, поэтому они, как правило, плохая идея. В этом конкретном случае это может не иметь большого значения, потому что MySQL будет использовать функцию 'replace' для поиска' string-to-be-replace 'и заменять это только в любых соответствующих строках. Но, как правило, предложение WHERE является самой важной вещью запроса 'UPDATE'. Вы не хотите, чтобы все пароли пользователей были изменены, потому что один пользователь изменил свой пароль. – Daan

ответ

2

Вы не можете обновить несколько таблиц в одном операторе, однако, вы можете использовать транзакцию два убедитесь, что два оператора UPDATE обрабатываются вместе. Вы также можете использовать их, чтобы избежать поездки туда и обратно.

BEGIN TRANSACTION 
UPDATE phpbb_posts 
SET post_subject = REPLACE(`post_subject`,'string-to-be-replaced','replacement-string') 
WHERE (`post_subject` LIKE '%string-to-be-replaced%') 
ORDER BY `phpbb_posts`.`post_time` DESC 

UPDATE phpbb_topics 
SET .topic_title = <something> 
WHERE <column> = <something> 

COMMIT 
+0

Возможно, вы хотели написать «can not» :) – Daan

+0

@Daan - Исправлено. Спасибо, что заметили это и сообщили об этом. – JHS

Смежные вопросы