Начало » Использование СУБД » PostgreSQL » Написать странный запрос с update
Написать странный запрос с update [сообщение #4476] |
Wed, 14 February 2024 18:21 |
polin11
Сообщений: 7 Зарегистрирован: 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?
|
|
|
Переход к форуму:
Текущее время: Sun Dec 22 13:33:54 GMT+3 2024
Общее время, затраченное на создание страницы: 0.00663 секунд
|