Итак ... пару дней спустя я сам все понял.
К счастью, была еще одна таблица, содержащая все идентификаторы, которые мне были нужны для обновления, которое я искал.
Таким образом, в дополнение к
table_1_user
table_2_user
table_3_user
была таблица, содержащая идентификаторы:
TABLE пользователей
user_id | user_name | ...
1 max
2 justin
... ...
Итак, на первом шаге я должен был создать временную таблицу 1016 *:
CREATE TEMPORARY TABLE temp
SELECT user_id FROM users;
Затем я должен был создать процедуру, чтобы можно было использовать циклы while:
DELIMITER $$
DROP PROCEDURE IF EXISTS Update_User_URLS;
CREATE PROCEDURE Update_User_URLS()
BEGIN
...
END $$
DELIMITER ;
CALL Update_User_URLS();
Затем мне пришлось добавить необходимый во время цикла выбора user_id из временной таблицы . В конце цикла это user_id пришлось удалить из временной таблицы:
DELIMITER $$
DROP PROCEDURE IF EXISTS Update_User_URLS;
CREATE PROCEDURE Update_User_URLS()
BEGIN
WHILE (SELECT COUNT(*) FROM temp) > 0 DO
SELECT @id := user_id FROM temp LIMIT 1;
...
DELETE FROM temp WHERE user_id = @id;
END WHILE;
END $$
DELIMITER ;
CALL Update_User_URLS();
В цикле while Мне пришлось установить переменную в качестве имени объединенной таблицы и используйте PREPARE для моего назначенного запроса, а также EXECUTE для его запуска.
DELIMITER $$
DROP PROCEDURE IF EXISTS Update_User_URLS;
CREATE PROCEDURE Update_User_URLS()
BEGIN
WHILE (SELECT COUNT(*) FROM temp) > 0 DO
SELECT @id := user_id FROM temp LIMIT 1;
SET @table = concat('table_', @id, '_user');
SET @query = concat('UPDATE ', @table, 'SET user_url = replace(user_url, '"example.com"', '"anotherexample.com"')')
PREPARE statement from @query;
EXECUTE statement;
DELETE FROM temp WHERE user_id = @id;
END WHILE;
END $$
DELIMITER ;
CALL Update_User_URLS();
И у меня это сработало!