SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » PostgreSQL » Написать странный запрос с update
Написать странный запрос с update [сообщение #4476] Wed, 14 February 2024 18:21
polin11 в настоящее время не в онлайне  polin11
Сообщений: 6
Зарегистрирован: January 2023
Junior Member
Использую PGSQL, упрощенный запрос выглядит так
 WITH a
         AS ( SELECT DISTINCT UNNEST(ARRAY['777', NULL]) "Ключ",
         UNNEST(ARRAY['111', '222']) "Знач"
         )
 update "Документы"
 set "Название" = "Название" || '_' || a."Знач"
 FROM a
 where "Id" IS NOT DISTINCT FROM  a."Ключ"
returning *
хочется переписать запрос для того чтобы попадать в индекс,
отдельно для нулевых значений и не нулевых, такого типа

WITH a
         AS ( SELECT DISTINCT UNNEST(ARRAY['777', NULL]) "Ключ",
         UNNEST(ARRAY['333', '444']) "Знач"
         )
 update "Документы"
 set "Название" = "Название" || '_' || a."Знач"
 FROM a
 where
   EXISTS (
    SELECT TRUE
    FROM a
    WHERE "Id" = a."Ключ" and "Id" IS NOT NULL and a."Ключ" IS NOT NULL  
    UNION
     SELECT TRUE
    FROM a
    WHERE "Id" IS NULL and a."Ключ" IS NULL
   )
returning *
этот запрос неверно определяет Знач, для своего Ключа.
Как написать подобный запрос, если не прибегать к CTE?
Предыдущая тема: Почему у двух запросов разный вывод
Следующая тема: Отличие времени выполнения обычного запроса и обёрнутого в функцию
Переход к форуму:
  


Текущее время: Mon Apr 29 10:04:33 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00524 секунд