Проставить массового категорию для записей в блоге Webasyst

Ниже — несколько удобных вариантов вставки записей в таблицу blog_post_category.

1. По одной записи (каждый INSERT отдельно)

 INSERT INTO blog_post_category (post_id, category_id) VALUES (334, 4); INSERT INTO blog_post_category (post_id, category_id) VALUES (335, 4); INSERT INTO blog_post_category (post_id, category_id) VALUES (336, 4); -- и т.д. 

2. Групповая вставка (несколько значений в одном INSERT)

Более компактно и быстрее — вставлять сразу несколько строк:

 INSERT INTO blog_post_category (post_id, category_id) VALUES (334, 4), (335, 4), (336, 4), (337, 4); 

3. Автоматическая генерация через рекурсивный CTE (MySQL 8.0+)

Важно: рекурсивные CTE поддерживаются, начиная с MySQL 8.0.

 -- Параметры SET @start_id = 334; SET @end_id = 416; SET @cat_id = 4; WITH RECURSIVE seq AS ( SELECT @start_id AS n UNION ALL SELECT n + 1 FROM seq WHERE n + 1 <= @end_id ) INSERT INTO blog_post_category (post_id, category_id) SELECT n, @cat_id FROM seq; 

4. Массовая проставка дополнительных параметров (пример для blog_post_params)

Если нужно проставить дополнительные параметры для нескольких записей:

 INSERT INTO `blog_post_params` (`post_id`, `name`, `value`) VALUES ('331', 'sale', 'true'), ('332', 'sale', 'true'), ('333', 'sale', 'true'); 

5. Дополнительные советы

  • Перед массовой вставкой всегда делайте BEGIN; ... COMMIT; или тестируйте в транзакции, чтобы можно было откатить изменения при ошибке.
  • Проверьте наличие уникальных ограничений (unique key) в таблице blog_post_category — если есть, повторные INSERT вызовут ошибки.
  • Для больших диапазонов лучше использовать батчи (например, по 1k записей), чтобы избежать долгих транзакций и проблем с памятью.
  • Если нужно пропускать дубли — используйте INSERT IGNORE или INSERT ... ON DUPLICATE KEY UPDATE.

Скопируйте нужный блок SQL и выполните в вашей MySQL-консоли или через клиент. Если хотите — могу подготовить готовый INSERT для конкретного списка ID (вставьте список ID) в том же HTML-формате.

1 оценка, среднее 5.00 из 5