Подскажите пожалуйста, какое и надо написать условие или как , чтобы можно было сопоставить данные с null в postgresql?
У меня есть таблицы и результат ----> https://dbfiddle.uk/?rdbms=postgres_14&fiddle=60c3f591e71afeb7e380660273affb24
Мне надо данные из таблицы personal_vlaues добавить в accounts, например если есть tariff у redirect то он изменит ток у этого клиента(redirect) и тариф(tariff), если в это таблице будут модель(model) и (rated_energy) у клиент(redirect) то он изменит у него. Но там есть null и если там стоит null то он оставляет данные те которые уже есть в таблице accounts. А то если так оставить то вместо старых значений поставит null. Null значит ничего. И еще условие, если в будущем я захотел изменить в personal_vlaues или удалить там данные то он сопоставлять данные с этого числа( чтобы не создавать для этого доп. таблицу). Пример: 1 числа были одни значения и потом 3 числа решил изменить, и чтобы он не изменил 1 и 2 число а изменил начиная с 3 числа. Тип проверка по дате. Если надо более подробно что-то уточнить, пишите в коментах.
Ответы (1 шт):
Если подгонять запрос под требуемый результат, то вот так:
UPDATE accounts
SET rated_energy = COALESCE(personal_vlaues.rated_energy, accounts.rated_energy),
tariff = COALESCE(personal_vlaues.tariff, accounts.tariff)
FROM personal_vlaues
WHERE accounts.object = personal_vlaues.object
AND accounts.redirect = personal_vlaues.redirect
AND accounts.model = COALESCE(personal_vlaues.model, accounts.model);
https://dbfiddle.uk/?rdbms=postgres_14&fiddle=91f9dfd5c5bf541967357a8c4ad36b26
Но задачу я так и не понял...