2009-11-06 3 views
2

У меня есть две таблицы, одна из которых называется детали, а другая - c_details. Обе таблицы точно так же, для разных таблиц именОбновление строки в postgres из другой строки

Нет, я строка с данными в обоих этих таблицах

Можно ли обновить строку в деталях со строкой в ​​c_details

Eg за исключением.

Обновить данные SET (Выбрать * из c_details)?

ответ

3

Вы должны явно описать список столбцов, которые будут обновлены, а также ключ, чтобы соответствовать столбцы между двумя таблицами.

Синтаксис для обновления одной таблицы из другой таблицы подробно описан в документации UPDATE chapter документации PostgreSQL.

UPDATE 
    details 
SET 
    name = c.name, 
    description = c.description 
FROM 
    c_details AS c 
WHERE 
    c.id=details.id; 
1

Используйте этот SQL-запрос:

INSERT INTO details SELECT * FROM c_details 
3

Если вам нужно обновить ОТ выбора и установки поля на основе статистической функции (MIN), то тогда SQL следует читать:

UPDATE 
    details 
SET 
    name = (
    SELECT 
     MIN(c.create_at) 
    FROM 
     c_details AS c 
    WHERE 
     c.type = 4 
) 
WHERE 
    c.id = details.id; 
+1

Это работает, даже если детали и детали и c_details одинаковы Таблица. – Sameer

Смежные вопросы