Вы действительно не хотите делать что-то вроде foreach. Не думайте о SQL как о процедурном, как и о большинстве кодов (где вы делаете одно действие, затем второе и так далее). Вы должны думать об этом как о наборе, где вы что-то делаете с большими кусками, которые соответствуют определенным требованиям. Что-то типа:
INSERT INTO term_nodes (tid, x, nid) -- these are the field names
<subquery that selects all the data>
Подзапрос должен просто выбрать все данные, которые вы хотите вставить, возможно, что-то вроде:
SELECT nodeId, 4, termId FROM nodes WHERE contentType = X
Итак, сложив все вместе, вы получите:
INSERT INTO term_nodes (tid, x, nid)
SELECT nodeId, 4, termId FROM nodes WHERE contentType = X
Не нужно пытаться пробежаться по каждому элементу в подзапросе и вставить их по одному, достаточно сделать это все сразу.
Вот хорошая статья, которую я нашел о Процедурный и основанный на наборах SQL, который может помочь вам немного лучше понять концепцию.
person
Ryan Elkins
schedule
18.11.2009