Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>mysql sql insert update select}} ====== MySQL - UPDATE query based on SELECT Query / Обновление самого себя ====== При возникновении ошибки <note tip>Table is specified twice, both as a target for 'UPDATE' and as a separate source for data</note> How can i update itself in mysql/mariadb ===== Пример 1: (IN) ===== <code sql> UPDATE tbl_category_mark_model_form tbl_1 SET tbl_1.token=NULL WHERE tbl_1.id NOT ( SELECT * FROM ( SELECT id FROM tbl_category_mark_model_form ) t ); </code> ===== Пример 2: (NOT IN) ===== <code sql> UPDATE tbl_category_mark_model_form tbl_1 SET tbl_1.token=NULL WHERE tbl_1.id NOT IN ( SELECT * FROM ( SELECT id FROM tbl_category_mark_model_form ) t ); </code> ===== Пример 3: (SUB QUERY) ===== <code sql> UPDATE tbl_category_mark_model_form AS tbl_1 INNER JOIN ( SELECT * FROM tbl_category_mark_model_form ) AS tbl_2 ON tbl_1.id = tbl_2.id SET tbl_1.token = CONCAT_WS(':', tbl_2.category_id, tbl_2.form_id, tbl_2.mark_id, tbl_2.model_id) ; </code> ===== Пример 2: (LEFT JOIN) ===== <code sql> UPDATE tbl_category_mark_model_form tbl_1 LEFT JOIN tbl_category_mark_model_form tbl_2 ON tbl_1.id = tbl_2.id SET tbl_2.token = CONCAT_WS(':', tbl_1.category_id, tbl_1.form_id, tbl_1.mark_id, tbl_1.model_id) ; </code> ===== Пример 4: (INNER JOIN) ===== <code sql> UPDATE tbl_category_mark_model_form tbl1 INNER JOIN tbl_category_mark_model_form tbl2 ON tbl1.id = tbl2.id SET tbl2.token = CONCAT_WS(':', tbl1.category_id, tbl1.form_id, tbl1.mark_id, tbl1.model_id) ; </code>СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal