PostgreSQL Update没有正常更新



我试图将记录更新到列数字中的值在另一个表中按ID匹配,但是它将Number列中的所有行更新为另一个表中第一个匹配的ID所匹配的值。

UPDATE public.table
SET number = s.number,
updatedt =  now()                
-- select a.* , s.number
FROM public.Department AS a
INNER JOIN public.Department_stg AS s
ON a.id = s.id 
AND a.number <> s.number;
--AND COALESCE (a.number, 1) = COALESCE (s.number, 1) ; 
--AND COALESCE (CAST (a.number AS VARCHAR(20) ),'') <> COALESCE (CAST (s.numberAS VARCHAR(20) ),'') ; 

您忘记使用FROM子句中的内连接连接"table"WHERE条件;也许

WHERE "table".id = a.id

如果没有这样的条件,"table".number将被更新为来自内部连接的任何行。

与postgreSQL中的T-SQL不同,JOIN不需要更新。我们可以只在From子句中传递源值表,并在UPDATE子句中保持要更新的表。

UPDATE public.table AS a
SET number= s.number,
updatedt =  now() 
FROM public.Department_stg AS s
WHERE a.id = s.id
AND COALESCE (a.number, 1) <> COALESCE (s.number, 1) ;

相关内容

  • 没有找到相关文章

最新更新