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