Здравствуйте, подскажите пожалуйста, если одна строка, в ней много колонок. И вот нужно поменять данные в этих колонках. Я делаю три разных запроса, вначале для одной колонки, потом второй запрос для второй колонки, ну и третий для третьей колонки. При этом сама таблица (строка) одна и таже. Вопрос, можно ли запрос обьединить вместо трёх в один или это нереально? Я знаю как-то через занятые и прочие значения пишут более длинный запрос, но не понимаю как.
Вот примеры запросов:
UPDATE cms_test SET target_id = '1' WHERE target_url LIKE '%testik/testik.html%' AND target_id = '0';
UPDATE cms_test SET target_subject = 'new' WHERE target_url LIKE '%testik/testik.html%' AND target_subject = 'testik';
UPDATE cms_test SET target_url = 'new/testik.html' WHERE target_url LIKE '%testik/testik.html%' AND target_url = 'testik/testik.html';
То есть первый меняет в ячейке target_id с 0 на 1.
Второй — target_subject меняет testik на new.
Третьей — target_url меняет testik/testik.html на new/testik.html
Получается замена идёт в трёх колонках, но в одной и тоже таблице cms_test.
Можно как-то написать один запрос вместо трёх? Подскажите пожалуйста.
#1
15 декабря 2018 в 13:01
#2
15 декабря 2018 в 13:45
Как-то так
А вот это условие у вас забавное, LIKE явно лишний.
UPDATE cms_test SET target_id = REPLACE(target_id, '0','1'), target_subject = REPLACE(target_subject, 'testik','new'), target_url = REPLACE(target_url, 'testik/','new/'),
WHERE target_url LIKE '%testik/testik.html%' AND target_url = 'testik/testik.html';
#3
15 декабря 2018 в 14:18
Как-то так
А вот это условие у вас забавное, LIKE явно лишний.
UPDATE cms_test SET target_id = REPLACE(target_id, '0','1'), target_subject = REPLACE(target_subject, 'testik','new'), target_url = REPLACE(target_url, 'testik/','new/'),
WHERE target_url LIKE '%testik/testik.html%' AND target_url = 'testik/testik.html';
в общем этот запрос заменил вообще все и устроил кашу… что то не так.