Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
sql:mysql:update-someself [2016/09/29 03:46] mirocowsql:mysql:update-someself [2016/12/05 20:41] (текущий) – [MySQL - UPDATE query based on SELECT Query / Обновление самого себя] mirocow
Строка 1: Строка 1:
 {{tag>mysql sql insert update select}} {{tag>mysql sql insert update select}}
  
-====== MySQL - UPDATE query based on SELECT Query ======+====== MySQL - UPDATE query based on SELECT Query / Обновление самого себя ====== 
 + 
 +При возникновении ошибки 
 + 
 +<note important>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 How can i update itself in mysql/mariadb
  
-===== Пример 1 =====+===== Пример 1: (IN) =====
  
 <code sql> <code sql>
-UPDATE +UPDATE tbl_category_mark_model_form tbl_1 SET tbl_1.token=NULL WHERE tbl_1.id NOT 
-    Table_A +  SELECT * FROM ( 
-SET +    SELECT id FROM tbl_category_mark_model_form 
-    Table_A.token = CONCAT_WS(':', Table_B.category_id, Table_B.form_id, Table_B.mark_id, Table_B.model_id) +  ) t 
-FROM +);
-    tbl_category_mark_model_form Table_A +
-INNER JOIN +
-    tbl_category_mark_model_form Table_B +
-ON +
-    Table_A.id = Table_B.id +
-;+
 </code> </code>
  
-===== Пример 2 =====+===== Пример 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> <code sql>
 UPDATE tbl_category_mark_model_form AS tbl_1 UPDATE tbl_category_mark_model_form AS tbl_1
-INNER JOIN(+INNER JOIN (
 SELECT * FROM tbl_category_mark_model_form SELECT * FROM tbl_category_mark_model_form
 ) AS tbl_2 ON tbl_1.id = tbl_2.id ) AS tbl_2 ON tbl_1.id = tbl_2.id
Строка 32: Строка 39:
 </code> </code>
  
-===== Пример 2 =====+===== Пример 2: (LEFT JOIN) =====
  
 <code sql> <code sql>
Строка 43: Строка 50:
 </code> </code>
  
-===== Пример =====+===== Пример 4: (INNER JOIN) =====
  
 <code sql> <code sql>
-UPDATE tbl_category_mark_model_form tbl1 +UPDATE  
-INNER JOIN +    tbl_category_mark_model_form tbl1 
-tbl_category_mark_model_form tbl2 +INNER JOIN  
-ON tbl1.id = tbl2.id +    tbl_category_mark_model_form tbl2  
-SET tbl2.token = CONCAT_WS(':', tbl1.category_id, tbl1.form_id, tbl1.mark_id, tbl1.model_id)+ON  
 +    tbl1.id = tbl2.id 
 +SET  
 +    tbl2.token = CONCAT_WS(':', tbl1.category_id, tbl1.form_id, tbl1.mark_id, tbl1.model_id)
 ; ;
 </code> </code>