MySQL перебор значений без перебора (одним скриптом).
Здесь я приведу некоторые примеры полезных запросов в MySQL которые, как я думаю, многим могут пригодиться. Во всяком случае, когда я искал такую информацию, я так и не смог найти ничего дельного. Поэтому дошёл своим умом помаленьку. Данные запросы помогут сэкономить время и не писать процедуры для обработки данных, которые работают в разы медленнее, или помогут сделать эти процедуры значительно быстрее. Запросы показывают как в MySQL можно делать изменение записей в таблице, с перебором по всем необходимым значениям и с проверкой необходимых условий но без всяких переборов, только средствами MySQL одним запросом.
Итак приступим:
Вставка в таблицу данных из выборки:
insert into `Table1` (`Field1`,`Field2`)
select `Table2`.`Field1`, `Table2`.`Field2`
from `Table2` where `Field1`=0
Этот скрипт вставит в таблицу Table1 данные из таблицы Table2 удовлетворяющие заданному условию.
Если мы хотим добавить таблицу Table1 данными из выборки то это может выглядеть так:
insert into `Table1` (`Field1`,`Field2`)
select `Table2`.`Field1`, `Table2`.`Field2`
from `Table2`
where (`Field1` not in(select `Field1` from `Table1`))
Таким образом из выборки будут вставлены только те записи которых нет в Table1 (имеется ввиду нет со значением поля Field1).
Так-же думаю будет интересен пример изменения значений в одной таблице с заполенением этих значений из другой.
update `Table1` set `Table1`.`Field2`=(select `Table2`.`Field2` from `Table2`
where `Table2`.`Field1`=`Table1`.`Field1`)
Этот скрипт изменит значения в таблице Table1 заменив их на соответствующие по значениям Field1 из таблицы Table2.
Можно всё это делать и с более сложными условиями и вложенными запросами.