«ОБНОВЛЕНИЕ SQL из SELECT» — это распространенная операция в SQL, которая позволяет обновлять записи в одной таблице на основе значений из другой таблицы. Вот несколько способов добиться этого, а также примеры кода:
-
Использование подзапроса:
UPDATE table1 SET column1 = ( SELECT column2 FROM table2 WHERE table1.id = table2.id ) WHERE EXISTS ( SELECT * FROM table2 WHERE table1.id = table2.id );В этом примере обновляется
column1вtable1соответствующими значениями изcolumn2вtable2на основе соответствующегоid. -
Использование INNER JOIN:
UPDATE table1 INNER JOIN table2 ON table1.id = table2.id SET table1.column1 = table2.column2;В этом примере
INNER JOINиспользуется для сопоставления записей в обеих таблицах на основе столбцаid, а затем выполняется обновление. -
Использование коррелированного подзапроса:
UPDATE table1 SET column1 = ( SELECT MAX(column2) FROM table2 WHERE table2.id = table1.id );В этом примере обновляется
column1вtable1максимальным значением изcolumn2вtable2для соответствующего>id. -
Использование временной таблицы:
CREATE TEMPORARY TABLE temp_table AS ( SELECT column1, column2 FROM table1 JOIN table2 ON table1.id = table2.id ); UPDATE table1 SET table1.column1 = temp_table.column2 FROM temp_table WHERE table1.id = temp_table.id;Здесь создается временная таблица для хранения значений объединения
table1иtable2, а затем на основе временной таблицы выполняется обновление. -
Использование CTE (общее табличное выражение):
WITH cte AS ( SELECT column1, column2 FROM table1 JOIN table2 ON table1.id = table2.id ) UPDATE table1 SET table1.column1 = cte.column2 FROM cte WHERE table1.id = cte.id;В этом примере CTE используется для объединения строк из
table1иtable2, а затем обновление выполняется на основе CTE.