TrogWarZ
@TrogWarZ
web developer

Как выполнить запрос для каждой строки в таблице?

MySQL 5.5.x

Есть запрос вида:
INSERT INTO table1 (field1, field2, field3, field4, field5, field6)
(
    SELECT t2.field1, t2.field2, uid, t2.field3, 42, 100500
    FROM table2 AS t2
    /* ... joins, conditions, subqueries, etc ... */
)


Здесь некоторый параметр `uid` – это `users_table.id`, который никак не связан со всем остальным запросом.
Задача для каждого пользователя (=каждой строки из `users_table`) выполнить insert-запрос выше, подставив внутрь (возможно даже не на первый уровень вложенности подзапроса) айдишник вместо uid.

Как это сделать с помощью скриптовых языков (пхп, питон, ...) – очевидно, однако, если в таблице юзеров миллион, то скорость будет категорически удручать. Как сделать в SQL цикл и вызывать процедуру – тоже теоретически понятно.

Есть ли способ это ускорить? Например, реализовать одним запросом?
  • Вопрос задан
  • 349 просмотров
Решения вопроса 1
@JuniorNoobie
Сижу в поддержке, пишу мелкие проекты
Напишите триггер на insert и повесьте на таблицу. В триггере можете извращаться с id каждой записи как угодно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы